gpt4 book ai didi

ember.js - 无法使用 setupController 中的数据集渲染模板

转载 作者:行者123 更新时间:2023-12-02 06:27:37 25 4
gpt4 key购买 nike

Emberjs v1.0.0-pre.4

Handlebars 1.0.0.rc.2

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

MembersRoute 将呈现 friend 模板,该模板通常显示我们所有的 friend ,但在这种情况下仅显示所选列表的成员。

应用程序的路由器

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>

申请模板

<script type='text/x-handlebars' data-template-name='application'>
<div class='row'>
<div class='span4'>
{{render 'lists'}}
</div>
<div class='span8>
{{outlet}}
</div>
</div>
</script>

最后,数据存储和模型

App.Store = DS.Store.extend({
revision: 11,
adapter: 'DS.FixtureAdapter'
});

App.List = DS.Model.extend({
members: DS.hasMany('App.Friend'),
name: DS.attr('string'),
isSelected: DS.attr('boolean'),
num_of_members: function () {
var num = this.get('members').toArray().length,
str = num + ' Member';
return num === 1 ? str : str + 's';
}.property('members'),
title: function () {
return 'Friends in ' + this.get('name');
}.property('name'),
toggleSelected: function () {
this.set('isSelected', !this.get('isSelected'));
return this;
}
});

App.Friend = DS.Model.extend({
lists: DS.hasMany('App.List'),
name: DS.attr('string'),
imageUrl: DS.attr('string'),
isSelected: DS.attr('boolean'),
toggleSelected: function () {
this.set('isSelected', !this.get('isSelected'));
return this;
}
});

最佳答案

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

setupController: function(controller, model) {
this._super(controller, model)
controller.set('something', 'some value');
}

关于ember.js - 无法使用 setupController 中的数据集渲染模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14905264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com