SAPUI5 从 JSON-Model 获取单个属性

dot*_*huZ 2 attributes json model sapui5

我目前正试图弄清楚如何从 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);
Run Code Online (Sandbox Code Playgroud)

在我的控制器中:

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);
    });
},
Run Code Online (Sandbox Code Playgroud)

在我的 console.log 语句中,我可以看到数据已成功从后端传递并成功设置为 JSON 模型。我的要求是将属性 Editable 的值存储在单个变量中。

console.log 语句

我已经尝试过 gConfigModel.getProperty('/'),​​没有用。试图访问 gConfigModel.oData 未定义 .. 如何将其存储在单个值中?

解决方案评论:如果您从后端捕获数据,则必须注意它需要多长时间。数据可以在预期之后可用,在我的情况下,我添加了 1s 超时,之后我可以轻松访问该属性

 setTimeout(function() {
     console.log(gConfigModel.getProperty('/Editable'));
 }, 1000);
Run Code Online (Sandbox Code Playgroud)

Qua*_*ure 5

我不建议使用模型的getData()方法,因为它已被弃用。

一个更好的解决方案是使用gConfigModel.getProperty("/Editable") (我在这里使用根斜杠,因为您的属性驻留在模型的根中)

以同样的方式,你还可以设置你的数据: gConfigModel.setProperty("/Editable", <your new value>)代替