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());
我遇到了问题,如果我在我的控制器中设置 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());