我遇到了问题,如果我在控制器中设置JSONModel
,我就无法从中获取数据:
var oModel = new JSONModel(jQuery.sap.getModulePath("QAQuickAccess", "/routes.json"));
this.getView().setModel(oModel);
console.log(oModel.getJSON());
getJSON
方法只是对模型的oData
对象进行字符串化。但它只是给了我一个空的对象。如果我只记录oModel
,我可以看到该对象及其内容:
答案 0 :(得分:0)
您可以通过oModel.getProperty("/TileCollection");
答案 1 :(得分:0)
1)异步方式:默认情况下,JSONModel进行的HTTP调用是异步的。因此,如果您想在HTTP请求完成后访问数据,那么您需要使用下面的代码段中提到的 attachRequestCompleted 方法。 这将在HTTP请求完成后自动调用侦听器,并且在侦听器中,您可以将JSONModel附加到视图或执行其他businsess逻辑,如下所述:
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());