如何刷新视图?

时间:2017-10-21 07:22:42

标签: model-view-controller sapui5

我正在刷新我的视图模型onRouteMatched ...

    _onRouteMatched: function(oEvent) {
        this.getView().setModel(new JSONModel({siteInfo: {}, surveyInfo: {}, categories: []}), "view");
        var oViewModel = this.getView().getModel("view");
}

但是,如果我在没有刷新的情况下返回页面(按后退箭头然后返回),我再次创建视图时会出现重复的ComponentId错误。

        var oPanel = new sap.m.Panel({
           expandable: true,
           expanded: false,
           headerText: oData.results[0].CategoryDesc,
           id: "Panel" + index
        });

就好像视图组件“Panel”仍然存在,因此只能在刷新时创建一个新组件,而不是onRouteMatched。

如果刷新页面,这样可以正常工作,但是如何在onRouteMatched上刷新视图?

1 个答案:

答案 0 :(得分:1)

简单地避免编程控件的创建(通过编码)并尝试定义所有的东西吧 XML视图使用绑定 - 它非常强大的功能,可以解决99%的问题。 您只需定义一次绑定并仅通过模型中的数据修改来更改视图,而不是通过DOM操作(绑定将根据模型状态免费执行)。

我建议您完成官方文档中的数据绑定教程

至于你的问题,如果想象没有绑定的解决方案,你应该总是手动销毁这些东西并再次重新创建它。或者进行一些存在检查。