2

如何解决 Ember.Route 中的异步 hasMany 关系?

具体来说:我不知道为什么this.modelFor('collection').get('id')返回一个 ID 而是this.modelFor('collection').get('recipes_refs')一个对象(也许是一个承诺?)。

我必须解决recipes_refs,因为我需要确定当前查看的食谱集合是否包含当前请求的食谱。

// Route
App.CollectionRecipeRoute = Ember.Route.extend({
    model: function () {
        console.log(this.modelFor('collection').get('id'))
    }
});

// Models
App.Collection = DS.Model.extend({
    title: DS.attr('string'),
    assets: DS.attr(),
    status: DS.attr('string'),
    recipes_refs: DS.hasMany('recipe', { async: true })
});

App.Recipe = DS.Model.extend({
    title: DS.attr('string'),
    ingredients: DS.attr('string')
});
4

1 回答 1

3

你是对的,这this.modelFor('collection').get('recipes_refs')是回报一个承诺。您可以像处理任何其他承诺一样处理它,方法是使用then它来处理它解决或拒绝的情况。

this.modelFor('collection').get('recipes_refs').then(function(recipes){
  // At this point 'recipes' is a collection of live objects
  recipes.forEach(function(recipe,i){
    // do something with each recipe in the collection
  });
});
于 2013-09-26T21:49:33.707 回答