Ember.js 无法使用setupController中的数据集呈现模板
Emberjs v1.0.0-pre.4 把手1.0.0.rc.2 我正在ember建立一个facebook好友列表管理器。当我导航到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');
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');
}