我正在使用SAPUI5制作应用程序,但是模型更新没有及时反映在视图中而引起问题。
一个稍微简化的场景:我创建了一个文本字段,该文本字段从模型中获取文本:
currentText = new sap.m.Text({
width: '100%',
text: '{/currentTrip/perHour}'
});
Run Code Online (Sandbox Code Playgroud)
然后创建一个选择并附加一个更改处理程序:
sourceSelect.attachChange(oController.changeTripSource);
Run Code Online (Sandbox Code Playgroud)
在该控制器函数内部,我正在更新视图模型:
var model = this.getView().getModel().getData();
model.currentTrip.perHour = 5;
Run Code Online (Sandbox Code Playgroud)
我使用此更改事件产生的该编号所做的所有工作(例如更新直接使用此编号的连接图)。但是,在我执行其他操作(如按下按钮或其他操作)之前,视图本身将不会反映对模型的更改。我不明白为什么会这样,或者是什么触发了UI5来检查对模型的更改值并更新视图。有人对此有解决办法吗?
您为什么不setProperty()
直接调用模型?这将节省您不必要的调用来更新绑定,因为该模型将在内部完成。
model.setProperty("/currentTrip/perHour", 5);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我不明白为什么updateBindings()
刷新不起作用。两种方法都称为checkUpdate()
幕后花絮。