我正在使用SAPUI5来创建一个应用程序,我遇到的问题是模型更新没有立即反映在视图中。
略微简化的场景:我创建了一个文本字段,从模型中获取文本:
currentText = new sap.m.Text({
width: '100%',
text: '{/currentTrip/perHour}'
});
然后我创建一个select并附加一个更改处理程序:
sourceSelect.attachChange(oController.changeTripSource);
控制器功能内部更新视图模型:
var model = this.getView().getModel().getData();
model.currentTrip.perHour = 5;
我用这个数字做的所有事情都来自这个改变事件(比如更新一个直接使用这个数字的连通图)。然而,视图本身不会反映模型的变化,直到我采取其他操作,如按下按钮或其他东西。我不明白为什么会这样,或是什么触发UI5检查模型的更改值并更新视图。有人有解决方法吗?
你为什么不直接在模型上调用setProperty()
?这可以节省您多余的调用以更新绑定,因为模型将在内部执行此操作。
model.setProperty("/currentTrip/perHour", 5);
顺便说一句,我不明白为什么updateBindings()
应该工作而刷新没有。这两种方法都将窗帘称为checkUpdate()
。
每当数据更新时调用updateBindings()
总是好的做法。尝试:
model.updateBindings()