Ember.js 无法使用setupController中的数据集呈现模板

Ember.js 无法使用setupController中的数据集呈现模板,ember.js,Ember.js,Emberjs v1.0.0-pre.4 把手1.0.0.rc.2 我正在ember建立一个facebook好友列表管理器。当我导航到list/1/members时,MembersRoute填充MembersController的数据不会出现 MembersRoute将呈现friends模板,该模板通常显示我们的所有好友,但在此场景中,仅显示选定列表的成员 应用程序的路由器 App.Router.map(function () { this.route('instructions');

Emberjs v1.0.0-pre.4

把手1.0.0.rc.2

我正在ember建立一个facebook好友列表管理器。当我导航到
list/1/members
时,MembersRoute填充MembersController的数据不会出现

MembersRoute将呈现friends模板,该模板通常显示我们的所有好友,但在此场景中,仅显示选定列表的成员

应用程序的路由器

App.Router.map(function () {
    this.route('instructions');
    this.route('friends');
    this.route('members', {path: '/list/:list_id/members'});
});
路线

App.MembersRoute = Ember.Route.extend({
    model: function () {
        var list = this.controllerFor('application').get('selectedList'),
            friends = list && list.get('members') || [];
        return friends;
    },
    setupController: function (controller, model) {
        var list = this.controllerFor('application').get('selectedList');
        controller.set('title', list.get('title'));
        controller.set('list', list);
        controller.set('content', model);
    },
    renderTemplate: function () {
        this.render('friends');
    }
});
好友模板

<script type='text/x-handlebars' data-template-name='friends'>
  <h2>{{title}}</h2>
  <ul id='friends'>
    {{#each friend in controller}}
      <a href='#' {{action 'select' friend}}>
        <li {{bindAttr class='friend.isSelected:selected'}}>
            <img {{bindAttr src='friend.imageUrl'}}/>
            <p>{{friend.name}}</p>
        </li>
      </a>
    {{else}}
      <h3>There are no friends in this list.</h3>
    {{/each}}
  </ul>
</script>

不确定这是否有帮助,但在定义
setupController
时,
model
似乎被忽略或丢失。我不知道这是否是EmberJS的bug

我的解决方法是直接设置模型:

model: function() {
   return this.modelFor('todos');
} 
可通过以下方式扩展:

setupController: function(controller) {
  controller.set('something', 'some value');
  controller.set('model', this.modelFor('todos'));    // this was originally in the model function
}
或者更好:

setupController: function(controller, model) {
  controller.set('something', 'some value');
  controller.set('model', model);    // this was originally in the model function
}

实际上,您应该使用_super来实现默认实现

setupController: function(controller, model) {
  this._super(controller, model)
  controller.set('something', 'some value');
}
setupController: function(controller, model) {
  controller.set('something', 'some value');
  controller.set('model', model);    // this was originally in the model function
}
setupController: function(controller, model) {
  this._super(controller, model)
  controller.set('something', 'some value');
}