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

时间:2015-03-02 00:17:31

标签: javascript sapui5

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

2 个答案:

答案 0 :(得分:4)

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

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

顺便说一下,我不明白为什么updateBindings()在刷新时不起作用。两种方法都会在窗帘后面调用checkUpdate()

答案 1 :(得分:2)

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

 model.updateBindings()