emberjs has_many关联给出了卸载的数据

时间:2015-04-10 14:01:32

标签: ruby-on-rails json ember.js ember-data ember-cli

我是ember js的新手,我有一个json对ember模型的回应

   {:login_fields=>
        [
        {:component=>"ns4:FieldInfoComponent",
         :id=>1,
         :fieldinfos=>
           [{:fieldInfoObj=>"FieldInfoSingle", :id=>2, :login_field_id=>1}],
         :fieldinfo_ids=>[2]},
        {:component=>"ns4:FieldInfoComponent",
         :id=>2,
         :fieldinfos=>
           [{:fieldInfoObj=>"FieldInfoSingle", :id=>2, :login_field_id=>2}],
         :fieldinfo_ids=>[2]}
      ]
    }

emberjs的loginField模型:

App.LoginField = DS.Model.extend
  component: DS.attr 'string'
  fieldinfos: DS.hasMany('App.Fieldinfo')

FieldInfo模型:

App.Fieldinfo = DS.Model.extend
  login_field: DS.belongsTo 'App.LoginField'
  fieldInfoObj: DS.attr 'string'

我得到的ember响应包含loginfield模型的字段和正确值,并且还将它与fieldinfo模型相关联,但fieldinfo的数据显示为 Object {id =“2”,clientId = 5,data =“加载”,更多...} 为什么我没有得到has_many模型的实际数据?

1 个答案:

答案 0 :(得分:0)

来自Ember docs about model relationships

JSON应该将关系编码为ID数组:

{
  "post": {
    "comments": [1, 2, 3]
  }
}

然后sideloaded如果您想在一个请求中获取所有信息:

{
  "post": {
    "id": 1,
    "title": "Node is not omakase",
    "comments": [1, 2, 3]
  },

  "comments": [{
    "id": 1,
    "body": "But is it _lightweight_ omakase?"
  },
  {
    "id": 2,
    "body": "I for one welcome our new omakase overlords"
  },
  {
    "id": 3,
    "body": "Put me on the fast track to a delicious dinner"
  }]
}

你的json的问题是Ember期望field_infos是一个id数组,对你来说它是实际的对象。然后,为了解决这个问题,field_infos是一个fieldInfoObjs数组。哇,真有趣!

如果您对json有任何控制权,我建议您将其更改为更符合what EmberData expects

如果您无法控制传入的JSON,请对此答案发表评论,我可以尝试引导您使用您需要的资源。