【问题标题】:SAPUI5 - Remove oData Model bound to viewSAPUI5 - 删除绑定到视图的 oData 模型
【发布时间】:2023-04-11 03:02:02
【问题描述】:

我是 SAPUI5 的新手,我非常需要您的帮助。

我创建了一个 XML 视图并将 OData 模型绑定到它,如下所示。现在视图中的所有控件都已绑定,我可以看到数据了。

this.getView().setModel(oModel);

现在我有一个要求,我必须从视图中完全删除此绑定。我销毁了 oModel 并删除了它的所有绑定。现在当我刷新视图时,数据仍然存在于屏幕中。我希望视图中的所有数据都消失。

oModel.destroy();
oModel.refresh();
this.getView().getModel().refresh(true);

【问题讨论】:

  • 一个任何事件,例如按钮按下事件尝试将所有字段设置为空。

标签: sapui5


【解决方案1】:

我假设您使用sap.ui.model.odata.ODataModel 来检索 odata,然后使用例如 JSON 模型完成绑定,就像这样,

var oJson = new sap.ui.model.json.JSONModel({data : oData);

/* Here 'data' is any name that you provide to identify your data model, 'oData' is the data that is received as response from the sap.ui.model.odata.ODataModel */

并像您提到的那样将此模型设置为视图,

this.getView().setModel();

现在,要从视图中删除此数据,您可以尝试以下操作,

oJson.setData({data : null}, true);

这会将先前设置的oData 设置为null,因此视图中控件的所有数据绑定都将被删除(更改为空)。 我相信oJson.refresh() 是可选的,但如果没有反映更改,您也可以尝试添加它。

这是一种方法,直到您找到更好的东西:) Here 是我使用过的 API 的文档。

【讨论】:

    【解决方案2】:

    如果你正在使用

    var dataModel = new sap.ui.model.json.JSONModel();
    dataModel.setData(oDataResponse); //Data returned from oData.Read()
    this.getView().setModel(dataModel, "dataModel");
    

    获取模型,设置模型为null,更新绑定

    var dataModel = this.getView().getModel("dataModel"); 
    if(dataModel){
        dataModel.setData(null);
        dataModel.updateBindings(true);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多