我的 SAP UI5 应用程序控制器中有以下编码:
var myView = this.getView();
var data1 = {
"myDate": new Date()
};
oModel.loadData("products.json");
oModel.setData(data1);
myView.setModel(oModel);
其中 products.json - 只是屏幕上表格的简单数据。
我只能在屏幕上看到 products.json 数据,而oModel中的 myDate 值为空(在调试中检查)。
如果我评论 loadData 字符串, myDate 值会出现在屏幕上,看起来不错。
我如何一起使用它们?这种情况的最佳做法是什么?
答案 0 :(得分:0)
模型loadData
是一个异步过程,因此在与data1
同步设置后,它会更新模型。
此外,setData()
将清除模型中已有的所有内容,因此最好使用setProperty
并仅更新模型中的特定节点。
一旦从文件中加载静态数据,就应该添加静态数据:
oModel.attachRequestCompleted(function() {
oModel.setProperty("/myExtraData", data1);
});
然后可以通过/myExtraData/myData
答案 1 :(得分:0)
将新数据与SELECT e.FirstName, e.LastName, COUNT(*) as total,
SUM(CASE WHEN m.isRead = 0 THEN 1 ELSE 0 END) as total_unread
FROM [Messages] m JOIN
Employees e
ON m.SenderId = e.UserId
GROUP BY e.EmployeeId, e.FirstName, e.LastName;
参数setData()
的现有数据合并。
oModel.loadData("products.json");
var data1 = {
"myDate": new Date()
};
oModel.attachRequestCompleted(function() {
oModel.setData(data1, true);
});
答案 2 :(得分: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
注册事件处理程序。