【发布时间】:2014-10-10 08:27:31
【问题描述】:
我目前正在尝试弄清楚如何从 sap.ui.model.json.JSONModel 中检索单个值
在我的主要观点中:
var gConfigModel = new sap.ui.model.json.JSONModel();
var getConfigCallback = function(config) {
gConfigModel.setData(config);
};
oController.getConfiguration(getConfigCallback);
console.log(gConfigModel);
在我的控制器中:
getConfiguration : function(callback) {
var sServiceUrl = "/sap/opu/odata/sap/xxx/ConfigurationSet('Initialize')";
var config = {};
callback(config);
$.getJSON(sServiceUrl).done(function(data) {
config = data.d;
callback(config);
});
},
在我的 console.log 语句中,我可以看到数据已成功从后端传递并成功设置为 JSON 模型。我的要求是将属性 Editable 的值存储在单个变量中。
我已经尝试过 gConfigModel.getProperty('/'),没有用。试图访问 gConfigModel.oData 未定义。如何将其存储在单个值中?
解决方案评论:如果您从后端捕获数据,则必须注意它需要多长时间。数据可以在预期的时间后可用,在我的情况下,我添加了 1s 超时,之后我可以轻松访问该属性
setTimeout(function() {
console.log(gConfigModel.getProperty('/Editable'));
}, 1000);
【问题讨论】:
-
getData() 应该返回对象 oData。所以要访问 Editable 只需使用 var editable = gConfigModel.getData().Editable;
-
getData() 方法返回一个对象,该对象下面没有节点或属性 .. :( 我错过了什么?
-
对于后来查看此案例的任何人来说,这主要是由于标准的“async-things-do-not-happen-in-assumed-sequence”问题。阅读有关
ajax success callbacks的背景信息。本质上,OP 试图访问尚未从服务器返回的数据。
标签: json model attributes sapui5