openui5从JSONModel获取数据

时间:2017-08-17 07:03:37

标签: javascript json sapui5 jsonmodel

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

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

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

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

Object content

2 个答案:

答案 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());