openui5 从 JSONModel 获取数据

openui5 get Data from JSONModel

我遇到了问题,如果我在我的控制器中设置 JSONModel,我将无法从中获取数据:

var oModel = new JSONModel(jQuery.sap.getModulePath("QAQuickAccess", "/routes.json"));

this.getView().setModel(oModel);
console.log(oModel.getJSON());

getJSON 方法只是将模型的 oData 对象字符串化。但它只是给了我一个空对象。如果我只记录 oModel,我可以看到对象及其内容:

您可以通过 oModel.getProperty("/TileCollection");

访问属性

有两种方法可以实现:

1) 异步方式:默认情况下,JSONModel 进行的HTTP 调用是异步的。因此,如果您想在 HTTP 请求完成后访问数据,则需要使用下面代码片段中提到的 attachRequestCompleted 方法。 这将在 HTTP 请求完成后自动调用侦听器,在侦听器中,您可以将 JSONModel 附加到视图或执行其他业务逻辑,如下所述:

var oModel = new JSONModel(jQuery.sap.getModulePath("QAQuickAccess", "/routes.json"));
oModel.attachRequestCompleted(null,function() { 
console.log(oModel.getData()); 
this.getView().setModel(oModel) }, 
this);

2) 同步方式: 如果你想立即加载数据,那么你可以使用带有以下参数的loadData方法。这将同步发出 HTTP 请求:

var oModel = new JSONModel({});
var url = jQuery.sap.getModulePath("QAQuickAccess", "/routes.json")
oModel .loadData(url, "", false);
this.getView().setModel(oModel);
console.log(oModel .getData());