JSONModel。调用 "loadData "时,如何与现有数据合并?

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

在我的SAP UI5应用程序控制器中,我有以下编码。

var myView = this.getView();
var data1 = { "myDate": new Date() };
oModel.loadData("products.json");
oModel.setData(data1);
myView.setModel(oModel);

其中 产品.json - 只是屏幕上的表格的一个简单数据。

而我只能看到 产品.json 因此,屏幕上的数据,以及 我的日期 内含空值 oModel 在调试中检查)。

如果我评论 负载数据 弦。我的日期 值在屏幕上,看起来不错。

我怎样才能一起使用?这种情况下的最佳做法是什么?

sapui5
2个回答
0
投票

模型的 loadData 是一个异步进程,所以它将在你设置了同步的模型后,用 data1.还。setData() 会擦掉模型中的所有内容,所以最好使用 setProperty 并只更新模型中的一个特定节点。

您应该在从文件中加载静态数据后添加它。

oModel.attachRequestCompleted(function() {
    oModel.setProperty("/myExtraData", data1);
});

您添加的日期就可以通过 /myExtraData/myData


0
投票

将新数据与现有数据合并,使用 bMerge 的参数 setData().

oModel.loadData("products.json");
var data1 = {
    "myDate": new Date()
};
oModel.attachRequestCompleted(function() {
   oModel.setData(data1, true);
});

0
投票

API loadData 还拥有 bMerge 选项。

oModel.setData({ myDate: new Date() });
oModel.loadData("products.json", null, true, "GET", /*bMerge*/true);
// Merged results:
{
  myDate: /*date object*/,
  produces: [/*...*/]
}

无需为 requestCompleted.

© www.soinside.com 2019 - 2024. All rights reserved.