在UI5中访问JSON数据

时间:2014-08-04 04:07:22

标签: json

我尝试从以下网址访问JSON数据: http://api.openweathermap.org/data/2.5/weather?q=London

并获得以下回复:

{
  "coord": {
    "lon": 174.77,
    "lat": -36.87
  },
  "sys": {
    "type": 1,
    "id": 8276,
    "message": 0.0568,
    "country": "GB",
    "sunrise": 1407093366,
    "sunset": 1407130678
  },
  "weather": [
    {
      "id": 500,
      "main": "Rain",
      "description": "light rain",
      "icon": "10d"
    }
  ],
  "base": "cmc stations",
  "main": {
    "temp": 287.15,
    "pressure": 1017,
    "humidity": 76,
    "temp_min": 287.15,
    "temp_max": 287.15
  },
  "wind": {
    "speed": 3.6,
    "deg": 210
  },
  "clouds": {
    "all": 76
  },
  "rain": {
    "3h": 1
  },
  "dt": 1407115800,
  "id": 2193733,
  "name": "London",
  "cod": 200
}

请您建议我如何在UI5中访问它?

我已完成以下操作以设置模型:

var jsonModel = new sap.ui.model.json.JSONModel();
jsonModel.loadData('http://api.openweathermap.org/data/2.5/weather?q=Auckland');
sap.ui.getCore().setModel(jsonModel);

我可以看到Chrome中的响应很快。如何将其绑定到ui5控件?我已经看到了绑定语法,但是得到了null或undefined错误。

请建议。

等待回复。

干杯, AW

2 个答案:

答案 0 :(得分:0)

尝试使用AJAX示例:

initTodoModel : function() {  
    var oModel = new sap.ui.model.json.JSONModel();
    var aData = jQuery.ajax({
        type : "GET",
        contentType : "application/json",
        url : "http://sapm04.ibsolution.local:50000/demo.sap.com~d337_resttest_web/rest/todo/init/",
        dataType : "json",
        async: false, 
        success : function(data,textStatus, jqXHR) {
            oModel.setData({modelData : data}); 
            alert("success to post");
        }

    });

    return oModel;  
}

}

请注意,这在普通镀铬窗口中无效,您必须通过命令在禁用安全模式下打开Goog​​le Chrome:

chrome.exe --disable-web-security

答案 1 :(得分:0)

sap.ui.getCore().getModel(<your Modelname>).getData()

最好避免使用全局模型。您可以改用视图。像:this.getView().setModel(new JSONModel(), "yourModel")。模型绑定到视图,因此视图内的控件可以访问模型数据。