9

我正在使用 Ember 数据并且很难弄清楚 get ember 以识别来自服务器的 JSON 响应中的嵌套属性。这是 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>

名称和状态属性呈现良好。但是 addr.line1 和 addr.city 是空白的。有没有办法让 Ember 识别嵌套的 addr 属性?

谢谢!

4

3 回答 3

6

你有时间看吗

Ember 数据:模型片段

它允许嵌套数据

于 2014-11-11T19:08:03.107 回答
6

由于您将 addr JSON 嵌入到学校 JSON 中,因此您需要在 DS.RESTAdapter 中设置映射。

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

嵌入选项可以有两个值,1) 总是,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 回答