在Ember.Route上使用setupController时,是否需要在控制器上设置模型?

时间:2013-07-31 17:18:47

标签: ember.js

我对Ember.Route模型与setupController有一些混淆。我在这里有一个示例应用程序:

http://jsbin.com/ihakop/5/edit

我想知道为什么我需要添加以下内容(参见内联评论)

App.AppsShowRoute = Ember.Route.extend({
  model: function(params) {
    return App.LtiApp.find(params.id);
  },

  setupController: function(controller, model) {
    controller.set('reviews', App.Review.find());

    // Why is this line needed? Shouldn't it have the model
    // already on the controller?
    controller.set('model', model);
  }
});

模型不应该在控制器上吗?

1 个答案:

答案 0 :(得分:9)

这是一个很好的问题。 RC4引入了此行为。请查看此blog post以获取解释。 Ember人的建议是添加对_super()的调用:

App.AppsShowRoute = Ember.Route.extend({
  model: function(params) {
    return App.LtiApp.find(params.id);
  },

  setupController: function(controller, model) {
     this._super(controller, model);
     controller.set('reviews', App.Review.find());
  }
});