0

我有一个带有模型的 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}}

...但没有显示任何内容。我实际上尝试了其他几种方法,但没有任何效果。

我怀疑在输入路线之前可能没有设置 MealsController 的模型meals

我完全被困在这里,文档没有帮助。非常感谢任何帮助。

4

1 回答 1

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);
    }
});

当你的应用程序进入 Food 路由时,它会同时请求当前的食物和所有的饭菜。然后它将为食物控制器设置模型,并将所有餐点设置为餐点控制器上的模型。您应该能够在您的模板中访问它们,因为您已经设置了使用需求。

于 2014-04-25T17:04:24.477 回答