在Ember / Ember Data中访问嵌套的hasMany关系

时间:2014-01-13 20:34:51

标签: javascript ember.js ember-data

我试图访问嵌套的hasMany关系,期待这个承诺。不幸的是,我没有得到以下任何一个的预期结果:

// Tried the following
this.get('users.emails')
this.get('users.@each.emails')
this.get('users').get('emails')

// Trying to avoid this:
this.get('users').
  then(function(users) {
    var arr = Ember.A();

    users.forEach(function(user, index){
      arr.pushObject(user.get('emails'));
    });

    return array;
  }).
  then(function(emailArr){
    // then do something
  });

// Preferable
this.get('users.emails').then(function(emails){
  // then do something
});

1 个答案:

答案 0 :(得分:4)

如果您已将async值设置为true来定义模型,请执行以下操作:

users: DS.hasMany('user', {async: true})

然后通常调用this.get('users')将返回一个promise数组,并且在您实际开始使用它时可能无法解析。

嵌套gets很棘手,特别是异步模型的复杂性,所以我建议你这样做:

this.get('users').then(function(users) {
    users.get('emails').then(function(emails) {
        // do stuff with emails.
    });
}

恼人的?绝对。可能有必要吗?呀。