更新模型并不总是导致更新视图

Updating model does not always result in updated view

我正在使用 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 检查模型的更改值并更新视图。有人对此有解决办法吗?

每当数据更新时调用 updateBindings() 始终是一个好习惯。尝试:

 model.updateBindings()

为什么不直接在模型上调用 setProperty()?这会为您节省不必要的更新绑定的调用,因为模型会在内部进行更新。

model.setProperty("/currentTrip/perHour", 5);

顺便说一句,我不明白为什么 updateBindings() 可以工作而刷新却不能。这两种方法都在幕后调用 checkUpdate()