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 に答える