2016-07-29 6 views
0

非常に新しいember申し訳ありません、私はemberでカスタムアダプタとシリアライザを作成しようとしていましたが、DS.RESTadapterとRestシリアライザを拡張して、モデルのニーズに合わせてデータをマッサージしますが、モデルプロパティを使用してテンプレート内のモデル値を取得することはできませんでしたが、値を取得する方法がありました。Ember Data非標準的なコールのためのEmberデータ

モデル

App.Weather = DS.Model.extend({ 
    name : DS.attr('string'), 
    temperature : DS.attr('string'), 
    humidity : DS.attr('string'), 
    description : DS.attr('string'), 
}); 

アダプタ私はmodel.Contentアレイの下のすべての値を取得しています上記のよう

App.ApplicationAdapter = DS.RESTAdapter.extend({ 

    buildURL: function(item) { 
     return "http://website/weather?q=" + item['q']+ "&appid="+item['appid']; 
    }, 

    findQuery: function(store, type, query) { 
     return this.ajax(this.buildURL(query), 'GET'); 
    } 
}); 

シリアライザ

App.ApplicationSerializer = DS.RESTSerializer.extend({ 

    extractArray: function(store, type, payload) { 
     var weathers = [{ 
      id: 1 // Id hard coded 
     }]; 


     weathers[0]["name"]=payload["name"]; 
     weathers[0]["temperature"]=payload["main"]["temp"]; 
     weathers[0]["humidity"]=payload["main"]["humidity"]; 
     weathers[0]["description"]=payload["weather"][0]["description"]; 
     weathers[0]["type"]=payload["weather"][0]["main"]; 

     payload = { weathers: weathers }; 

     return this._super(store, type, payload); 
    } 
}); 

ルート

App.WeatherIndexRoute = Ember.Route.extend({ 
    model: function(params) { 
     //debugger; 
     return this.store.find('weather',{q:"London", `enter code here`appid:"b552aef423b1cf586b62d1ab1d4ef216"}); 

    }, 
    renderTemplate: function() { 
     this.render('default'); 
    }, 
    setupController: function(controller, model) { 

     **controller.set('model', model.content[0]);** 
    } 
}) 

わからないyモデルの代わりにmodel.contentを実行する必要があります。なぜそれがこのように自分自身を巣立たせるのでしょうか?

私はあなたがドキュメントを見つけることができないため、バージョンを使用していない、燃えさし 燃えさし-1.1.2.js

+0

setupControllerフックでmodelプロパティを設定する必要はありません。これは親コントローラによって自動的に設定されるためです。 this._super(.. arguments)を呼び出す必要があることを確認してください。 – kumkanillam

+0

入れ子になったアダプタの詳細については、Slides(http://www.slideshare.net/RyanMHarrison/nest-v-flat-with-emberdata)および/またはVideo( https://www.youtube.com/watch?v=DjAMSjFPLW8) – rmharrison

答えて

0

あなたはエンバーを学ぼうとしている場合の古いバージョンを使用しています。バージョン2.xを使用できない場合は、1.13をダウンロードしてください。

標準以外のRESTレスポンスを処理する方法はnormalize()メソッドを変更することです[http://emberjs.com/api/data/classes/DS.RESTSerializer.html#method_normalize]]あなたが持っているレスポンスを受け取り、シリアライザで必要な形式でJSONを作成する必要があります。

関連する問題