我正在使用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检查模型的更改值并更新视图。有人有解决方法吗?
答案 0 :(得分:4)
为什么不直接在模型上调用setProperty()
?这可以节省您多余的调用以更新绑定,因为模型将在内部执行此操作。
model.setProperty("/currentTrip/perHour", 5);
顺便说一下,我不明白为什么updateBindings()
在刷新时不起作用。两种方法都会在窗帘后面调用checkUpdate()
。
答案 1 :(得分:2)
在数据更新时调用updateBindings()
始终是一种好习惯。尝试:
model.updateBindings()