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

问题描述 投票:1回答:2

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

javascript sapui5
2个回答
4
投票

你为什么不直接在模型上调用setProperty()?这可以节省您多余的调用以更新绑定,因为模型将在内部执行此操作。

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

顺便说一句,我不明白为什么updateBindings()应该工作而刷新没有。这两种方法都将窗帘称为checkUpdate()


2
投票

每当数据更新时调用updateBindings()总是好的做法。尝试:

 model.updateBindings()
© www.soinside.com 2019 - 2024. All rights reserved.