2016-10-05 22 views
0

は、私は次のモデルは、以下の店舗で使用されているExtJSストアが正しくロードされていませんか?

Ext.define('Forecaster.model.WeatherDay', { 
    extend : 'Ext.data.Model', 
    fields : [ 
     { 
      name : 'version', 
      type : 'string', 
      mapping : 'version'//'forecast.simpleforecast.forecastday.date.pretty' 
     } 
    ] 
}); 

あります

Ext.define('Forecaster.store.WeatherDay', { 
    extend : 'Ext.data.Store', 
    model : 'Forecaster.model.WeatherDay', 
    autoLoad : true, 
    proxy : { 
     type : 'jsonp', 
     method : 'GET', 
     url : 'http://api.wunderground.com/api/[apiKEY]/forecast10day/q/11432.json', 
     reader : { 
      type : 'json', 
      rootProperty : 'response' 
     } 
    } 
}); 

をしかし店は空です。私が行うときは、次の

console.log(store.getProxy().getReader().rawData); 

後は(そうストアが受信されたデータ)をプリントアウトされ、次のJSONに対応

enter image description here

は私が受けていますその:

"response": { 
    "version":"0.1", 
    "termsofService":"http://www.wunderground.com/weather/api/d/terms.html", 
    "features": { 
    "forecast10day": 1 
    } 
    } 
     , 
    "forecast":{ 
     "txt_forecast": { 
     "date":"5:18 PM EDT", 
     "forecastday": [ 
     { 
     "period":0, 
     "icon":"cloudy", 
     "icon_url":"http://icons.wxug.com/i/c/k/cloudy.gif", 
     ...more of the response... 

私は明らかにデータを受け取っていますが、ストアは空です(getCount()は0を返します)ので、モデルフェーズへのマッピングで何が間違っていますか?

答えて

0

rootPropertyを正しく設定していないようです。 rootPropertyは、応答でWeatherDayモデルの配列を指し示すものである必要があります。 のような何か:

rootProperty: 'forecasts' 

サーバーの応答:{forecasts: [{version: "some version"},{version: "some other version"}]}

したい応答がネストされている場合は、次のようにナビゲートすることができます。

rootProperty: 'response.forecasts' 

サーバーの応答:{response: {forecasts: [{version: "some version"},{version: "some other version"}] }}

関連する問題