首页 > 解决方案 > 如何使用 NativeScript 更改值数据绑定字符串

问题描述

我正在尝试更改数据绑定的值,并在屏幕上也更改值,但我没有得到它。

我的onPageLoaded

export function onPageLoaded(args: EventData) {

    main = <Page>args.object;


    main.bindingContext = fromObject({
        loading: false,
        next: true,
        prev: false,
        count: 0,
        percent: 10,
        dataBoundVariable: null,
        form_hemodialysis: null,
        form_hemoderivatives: null,
        form_special_medicine: null,
        form_medicine: null,
        form_antibiotics: null,
        form_bandaid: null,
        form_speech_therapy: null,
        form_motor_therapy: null,
        form_respiratory_therapy: null,
        form_other_therapy: null,
        form: {
            patientStatus: null,
            reason: null,
            assistantDoctor: null,
            council: null,
            hospitalizationTypeId: null,
            hospitalizationDate: '6/1/2019',
            cidId: null,
            accommodationId: null,
            hda: null,
            diagnosis: null,
            speechtherapy_start_date: null,
            speechtherapy_frequency: null,
            motortherapy_start_date: null,
            motortherapy_frequency: null,
            respiratorytherapy_start_date: null,
            respiratorytherapy_frequency: null,
            othertherapy_start_date: null,
            othertherapy_frequency: null,
            procedures: [],
            antibiotics_name: null,
            antibiotics_start_date: null,
            antibiotics_end_date: null,
            antibiotics_prescription: null,
            comment: null,
            special_medicament: null,
            medicine: null,
            diets: [],
            gasotherapies: [],
            dressings: array,
            procedure
        },
        status: [
            'Alta',
            'Internado',
            'Não encontrado'
        ],
        reasons: [],
        internationTypes: [],
        accommodations: [],
        diets: [],
        cdi: ['Rafael', 'Deivid'],
        gasotherapies: [],
        bandaidPhases: ['I', 'II', 'III', 'IV'],
        bandaid: {
            phase: null,
            region: null,
            lesion_width: null,
            lesion_length: null,
            used_cover: null,
            expected_exchange: null
        },
        procedure: {
            name: null,
            date: null
        },
        statusSelected: null,
        otherDiets: false,
        otherGasotherapies: false
    })
}

export function selectDateInternacao(args){
    modalDatetimepicker = new ModalDatetimepicker();

    modalDatetimepicker
    .pickDate({
      title: "Selecione a data",
      theme: "light"
    })
    .then(result => {
        var date = `${result.day}/${result.month}/${result.year}`

        main.bindingContext.form.hospitalizationDate = date     
    })
    .catch(error => {
      console.log(`Error: ${error}`);
    });
}

值得记住的是值是更新的,它不会在屏幕上改变,但是如果我给出一个console.log(main.bindingContext.form.hospitalizationDate)值就会更新

标签: javascriptnativescript

解决方案


使用 时fromObject({...}),将仅监视直接属性的更改。modalDatetimepicker嵌套在里面form,所以任何更改form都只能触发 UI 的更新。您可以使用以下任一语法强制它,

将新对象分配给表单

main.bindingContext.form = Object.assign({}, main.bindingContext.form, {
 hospitalizationDate: date
});

(或者)

通过触发属性更改事件强制更改检测

main.bindingContext.form.hospitalizationDate = date;
main.bindingContext.notifyPropertyChange('form', main.bindingContext.form);

推荐阅读