Emberjs v1.0.0-pre.4 में सेट डेटा के साथ टेम्पलेट रेंडर करने में असमर्थsetupController
Handlebars 1.0.0.rc.2
मैं एंबर में एक फेसबुक दोस्त सूची प्रबंधक का निर्माण कर रहा हूँ। जब मैं list/1/members
पर नेविगेट करता हूं तो सदस्य जो सदस्य सदस्य नियंत्रक को पॉप्युलेट करता है, वह प्रदर्शित नहीं होता है।
सदस्य मार्ग मित्र टेम्पलेट प्रस्तुत करेगा, जो आम तौर पर हमारे सभी दोस्तों को प्रदर्शित करता है, लेकिन इस परिदृश्य में केवल चयनित सूची के सदस्य हैं।
आवेदन के रूटर
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;
}
});