javascript - 如何使用 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)
值就会更新
解决方案
使用 时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);
推荐阅读
- android - React Native Navigation v1 安卓黑屏
- reactjs - 要使用 React,我应该使用 nodejs (express) 吗?
- jquery - 复选框选择的多个实例
- python - 对数字范围内的数字进行四舍五入
- android - 如何从 windowPopup 按钮获取 id
- javascript - 如何在 OpenLayers 4 中按比例缩放?
- angular - 每次模态打开时都用新数据重新加载角度模态
- c# - jQuery ajax 在 Sharepoint 可视化 Web 部件中不起作用
- netlogo - Netlogo:如何计算列表中列表项的总和?
- html - 基于 HTML 文档中的标签循环