加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

sapui5 – 如何正确使用JSONModel和setModel?

发布时间:2020-12-16 18:41:21 所属栏目:百科 来源:网络整理
导读:我正在尝试使用SAP Web IDE创建一个示例屏幕,其中单击不同的按钮会更改屏幕周围的不同文本. 我在App.controller.js上有一些函数,代码就是这个(所有函数现在都做同样但影响不同的文本区域): onPressButton2: function () { var oData = { text: { line1: "li
我正在尝试使用SAP Web IDE创建一个示例屏幕,其中单击不同的按钮会更改屏幕周围的不同文本.
我在App.controller.js上有一些函数,代码就是这个(所有函数现在都做同样但影响不同的文本区域):

onPressButton2: function () {
  var oData = {
    text: {
      line1: "line1",line2: "line2",line3: "line3",line4: "line4"
    }
  };
  var oModel = new JSONModel(oData);
  this.getView().setModel(oModel);
},

这是XML的相应部分:

<items>
  <Text xmlns="sap.m" text="{/text/line1}" id="text1"/>
  <Text xmlns="sap.m" text="{/text/line2}" id="text2"/>
  <Text xmlns="sap.m" text="{/text/line3}" id="text3"/>
  <Text xmlns="sap.m" text="{/text/line4}" id="text4"/>
</items>

这是有效的,但是当我尝试更改屏幕的不同区域时,通过单击按钮所做的先前更改将消失.我假设这是因为我每次都会重新使用setModel覆盖它但我找不到正确的用法.

我应该为屏幕中的每个部分创建不同的js文件吗?
有没有办法更新模型而不是覆盖它?

解决方法

我认为你所搜索的是命名模型.如果您想要另外添加新模型,使用命名模型,您可以创建不同的模型而不会覆盖它们.

var oModel = new JSONModel(oData);
this.getView().setModel(oModel,"model1");

看看setmodel方法中的第二个参数.现在您可以在视图中访问它们了

<items>
  <Text xmlns="sap.m" text="{model1>/text/line1}" id="text1"/>
  <Text xmlns="sap.m" text="{model1>/text/line2}" id="text2"/>
  <Text xmlns="sap.m" text="{model1>/text/line3}" id="text3"/>
  <Text xmlns="sap.m" text="{model1>/text/line4}" id="text4"/>
</items>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读