9

私は Ember データを使用していますが、サーバーからの JSON 応答でネストされたプロパティを認識するために ember を取得するのに苦労しています。これは ember-1.0.0-pre.4.js です。

現在、関連するモデルを Ember データ リビジョン 11 に設定しています。

# School Model
App.School = DS.Model.extend
  addr:       DS.belongsTo('App.Addr')

  name:       DS.attr 'string'
  status:     DS.attr 'string'

# Address Model
App.Addr = DS.Model.extend
  school:   DS.belongsTo 'App.School'

  line1:    DS.attr 'string'
  city:     DS.attr 'string'
  state:    DS.attr 'string'
  iso:      DS.attr 'string'

そして、これが私のサーバーからの JSON 応答です。

{"schools":
 [{
    "_id":"51020261bbc3b8c526000007",
    "name":"Willamette",
    "status":"p",
    "addr":{
      "line1":"122 Evergreen Terrace",
      "city":"Springfield",
      "state":"IL",
      "iso":"US"
    }
   }    
  ]}

私のアダプターは次のように設定されています:

    App.Store = DS.Store.extend
      revision: 11
      adapter: DS.RESTAdapter.create({
        url: "http://localhost:8000/api"
        serializer: DS.RESTSerializer.extend
        primaryKey: (type) ->
          '_id';
      }) 

更新: 次のように、 addr プロパティをマップしようとしました。まだサイコロはありません...

DS.RESTAdapter.map 'App.School', 
  addr: { embedded: 'always'}

私のテンプレートでは、このようなことをしたいと思います...

   <script type="text/x-handlebars" data-template-name="school">
      <h2>School: {{name}}</h2>
      <p> Status: {{ status }}</p>
      <p> Address: {{ addr.line1 }} {{ addr.city }} </p>
    </script>

name プロパティと status プロパティは正常に表示されます。しかし、addr.line1 と addr.city は空白です。ネストされた addr プロパティを Ember に認識させる方法はありますか?

ありがとう!

4

3 に答える 3

6

見る時間あった?

Ember データ: モデル フラグメント

ネストされたデータを許可します

于 2014-11-11T19:08:03.107 に答える
6

学校の JSON に addr JSON を埋め込んでいるため、DS.RESTAdapter でマッピングをセットアップする必要があります。

DS.RESTAdapter.map 'App.School',
  addr: { embedded: 'always' }

組み込みオプションには、1) 常時、2) ロードの 2 つの値を指定できます。

詳細については、Yehuda の回答を参照してください: https://stackoverflow.com/a/14324532/1409279

于 2013-01-29T22:26:13.600 に答える
2

smaの答えは正しかったようです。最初に、アダプターへの参照が必要でした。このビット...

DS.RESTAdapter.map 'App.School', addr {embedded: 'always' }

...エラーが発生します'未定義のマップを呼び出すことはできません'。に更新されました...

    App.Adapter = DS.RESTAdapter.extend
      bulkCommit: false


    App.Adapter.map 'App.School', {
      addr: {embedded: 'always'}
    }

今すぐ動作します!

于 2013-01-30T19:31:52.690 に答える