Ember模型为空,直到进入Route

时间:2014-04-25 15:28:14

标签: ember.js ember-controllers

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

我完全被困在这里,而且文档没有帮助。任何帮助都非常赞赏。

1 个答案:

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

当您的应用进入美食路线时,它会同时请求当前的食物和所有餐点。然后,它将为食物控制器设置模型,并将所有膳食设置为膳食控制器上的模型。您可以使用需要在模板中访问它们。