javascript - 如何使用 NativeScript 更改值数据绑定(bind)字符串

标签 javascript nativescript

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

我的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),该值就会更新

最佳答案

当您使用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);

关于javascript - 如何使用 NativeScript 更改值数据绑定(bind)字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54065568/

相关文章:

javascript - silviomoreto bootstrap-select 不工作

javascript - 掩码未应用于 ng-model 的输入

ios - nativescript 如何使元素对触摸事件透明

javascript - yii2 fullcalendar 向元素添加弹出窗口

javascript - Express、http-proxy-middleware 和 net::ERR_CONNECTION_REFUSED

angular - NativeScript 预览问题

webview - NativeScript:如何禁用 WebView 中的缩放控件?

native 脚本 : Android new navigation bar

javascript - 在 TabView 中使用 Frame 标签时如何排除 ActionBar?

javascript - sequelizejs 在删除行时保存对象