Ember.js 如何在控制台中遍历hasMany关系?

Ember.js 如何在控制台中遍历hasMany关系?,ember.js,ember-data,Ember.js,Ember Data,我可以通过App.XXX.find()/find(n)获取CardProperty和cardcontegory,但无法在Chrome控制台中遍历此关系 这: 返回“未定义”,而: App.CardCategory.find(1).get('properties').objectAt(1) 返回: App.CardCategory.find(1).get('properties') 我总是在控制台中获取数据时遇到问题,因此我想知道这样做的最终方法是什么 更新 作为对评论的回应 App.Car

我可以通过App.XXX.find()/find(n)获取
CardProperty
cardcontegory
,但无法在Chrome控制台中遍历此关系

这:

返回“未定义”,而:

App.CardCategory.find(1).get('properties').objectAt(1)
返回:

App.CardCategory.find(1).get('properties')
我总是在控制台中获取数据时遇到问题,因此我想知道这样做的最终方法是什么


更新 作为对评论的回应

App.CardCategory.find(1.get('properties.length')返回
0
。对
/card_categories/1`的响应如下:

Class {type: undefined, store: Class, _changesToSync: Ember.OrderedSet, owner: Class, name: "properties"…}

一些快速的细节,有很多和属于你的东西,在一次发现后并没有立即显现出来

试着做几件事,看看情况是否如此

{
  "card_category":{
    "contains_new_purchase_slider":false,
    "id":1,
    "name":"Balance Transfer Cards",
    "promo_card_id":3,
    "promo_panel_active":true,
    "promo_panel_card_teaser":"Maiores rerum quibusdam consectetur id culpa. Enim unde explicabo et quae",
    "promo_panel_description":"Fugiat optio sint dolores non ut qui eveniet.",
    "promo_panel_header":"Unde ut voluptates eos ea dolor rerum mollitia.",
    "property_ids":[
      4,
      2,
      5,
      16
    ],
    "slug":"balance-transfer-cards"
  }
}
如果是这样的话,你可以一直这样做

App.CardProperty.find(); // load the properties first
var cc = App.CardCategory.find(1);
var props = cc.get('properties');
propsLength = props.get('length');
props.forEach(function(prop){
   console.log('prop exists here: ' + prop.get('label'));
}

好的,我终于明白了。首先,
CardCategory
应该具有
cardProperties
密钥,JSON中的密钥应该命名为
card\u property\u id
。我想我不能使用
properties',因为模型名为
App.CardProperty`。因此,取消与其他模型字段的关联,关系应以模型名称命名。下面是一个正确的例子:

Ember.run.next({
   // they will be materialized at this point
});

App.CardCategory.find(1.get('properties.length')
的值是多少?我猜是0。可能是因为您如何将数据加载到存储中,而存储无法识别关联。CardCategory的JSON响应是什么?如果你不介意的话,我会更新答案-评论太长了。谢谢你花时间!
Ember.run.next({
   // they will be materialized at this point
});
App.CardCategory = DS.Model.extend
  cardProperties: DS.hasMany 'App.CardProperty'

App.CardProperty = DS.Model.extend
  symbol: DS.attr 'string'
  label: DS.attr 'string'
  popover: DS.attr 'string'
  unit: DS.attr 'string'

DS.RESTAdapter.configure 'plurals',
  card_property: 'card_properties'

{
  "card_category":{
    "contains_new_purchase_slider":false,
    "id":1,
    "name":"Balance Transfer Cards",
    "promo_card_id":3,
    "promo_panel_active":true,
    "promo_panel_card_teaser":"Maiores rerum quibusdam consectetur id culpa. Enim unde explicabo et quae",
    "promo_panel_description":"Fugiat optio sint dolores non ut qui eveniet.",
    "promo_panel_header":"Unde ut voluptates eos ea dolor rerum mollitia.",
    "card_property_ids":[
      4,
      2,
      5,
      16
    ],
    "slug":"balance-transfer-cards"
  }
}