Sapui5 JSONModel:调用“时如何与现有数据合并”;“加载数据”;
我的SAP UI5应用程序控制器中有以下代码:Sapui5 JSONModel:调用“时如何与现有数据合并”;“加载数据”;,sapui5,Sapui5,我的SAP UI5应用程序控制器中有以下代码: var myView=this.getView(); var data1={“myDate”:new Date()}; oModel.loadData(“products.json”); oModel.setData(数据1); setModel(oModel); Where products.json-只是屏幕上表格的简单数据 因此,我只能在屏幕上看到products.json数据,并且在oModel(在调试中选中)中看到myDate的值为空
var myView=this.getView();
var data1={“myDate”:new Date()};
oModel.loadData(“products.json”);
oModel.setData(数据1);
setModel(oModel);
Where products.json-只是屏幕上表格的简单数据
因此,我只能在屏幕上看到products.json数据,并且在oModel
(在调试中选中)中看到myDate的值为空
在我注释loadData字符串的情况下,myDate值显示在屏幕上,看起来不错
我怎样才能一起使用它们?这种情况下的最佳实践是什么?模型的
loadData
是一个异步过程,因此它将在您与data1
同步设置后更新模型。
另外,setData()
将擦除模型中已经存在的所有内容,因此最好使用setProperty
并仅更新模型中的特定节点
从文件加载静态数据后,应添加静态数据:
oModel.attachRequestCompleted(function() {
oModel.setProperty("/myExtraData", data1);
});
您添加的日期可通过
/myExtraData/myData
使用参数setData()
将新数据与现有数据合并
API还有一个bMerge
选项
oModel.setData({myDate:new Date()});
loadData(“products.json”,null,true,“GET”,/*bMerge*/true)代码>
//合并结果:
{
myDate:/*日期对象*/,,
产生:[/*…*/]
}
无需为requestCompleted
注册事件处理程序。我知道bMerge选项,但如果没有attachRequestCompleted函数,它将无法工作。你的例子很好,非常感谢!
oModel.loadData("products.json");
var data1 = {
"myDate": new Date()
};
oModel.attachRequestCompleted(function() {
oModel.setData(data1, true);
});