更新模型并不总是导致更新视图
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()
。
我正在使用 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()
。