如何解决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')
});
答案 0 :(得分: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
});
});