【发布时间】:2015-03-02 00:17:31
【问题描述】:
我正在使用 SAPUI5 制作应用程序,但我遇到了一个问题,即模型的更新没有立即反映在视图中。
一个稍微简化的场景:我创建了一个从模型中获取文本的文本字段:
currentText = new sap.m.Text({
width: '100%',
text: '{/currentTrip/perHour}'
});
然后我创建一个选择并附加一个更改处理程序:
sourceSelect.attachChange(oController.changeTripSource);
在该控制器函数中,我正在更新视图模型:
var model = this.getView().getModel().getData();
model.currentTrip.perHour = 5;
我对这个变化事件产生的这个数字所做的所有事情都有效(比如更新一个直接使用这个数字的连通图)。然而,视图本身不会反映模型的变化,直到我采取 another 动作,如按下按钮或其他东西。我不明白为什么会这样,或者是什么触发 UI5 检查模型的更改值并更新视图。有没有人解决这个问题?
【问题讨论】:
-
查看@matbtt 的答案;您永远不应该直接更新模型属性,始终使用
model.setProperty("/path/to/your/property", oSomeData);-- 和getProperty("/path/to/your/property");从模型中检索数据 -
对于其他读者:这个答案也可能有帮助:stackoverflow.com/a/48157104/5846045
标签: javascript sapui5