我有一个带有模型的Ember应用程序:
(还有其他型号,但为了简洁起见,省略了这些。)
路由器的配置如下:
this.resource('food', { path: '/food/:food_id' });
this.resource('meals',function() {
this.resource('meal', { path: '/:meal_id'}, function() {
this.route('edit');
});
this.route('new');
});
在我的食物模板中,我需要访问膳食列表才能打印它们。最初我想到needs
上的FoodController
属性就可以了。
App.FoodController = Ember.ObjectController.extend({
needs: ['meals', 'mealsIndex'],
...
});
在我的模板中,我尝试了
{{#each meal in controllers.meals.content}}
TEST
{{/each}}
...但没有显示任何内容。我实际上尝试了其他几种方法,但没有任何效果。
我怀疑在输入meals
路线之前,可能没有设置MealsController的模型。
我完全被困在这里,而且文档没有帮助。任何帮助都非常赞赏。
答案 0 :(得分:0)
您需要手动从服务器请求模型,如下所示:
App.FoodRoute = Ember.Route.extend({
model:function(params){
var store = this.store;
return Ember.RSVP.hash({
food:store.find('food',params.food_id),
meals:store.find('meals')
});
},
controllerSetup:function(controller,models) {
controller.set('model',models.food);
this.controllerFor('meals').set('model',models.meals);
}
});
当您的应用进入美食路线时,它会同时请求当前的食物和所有餐点。然后,它将为食物控制器设置模型,并将所有膳食设置为膳食控制器上的模型。您可以使用需要在模板中访问它们。