我在视图中显示计算属性时遇到问题
我正在学习EmberJS不到一周。不同的教程有不同的编码风格,这非常混乱,所以我关注http://coding.smashingmagazine.com/2013/11/07/an-in-depth-introduction-to-ember-js/ 我在stackoverflow上看到了一些类似的帖子,但代码太复杂了,我无法理解,而且我的问题非常基本,没有帖子我只看到了基本的答案。
这是我的'用户'手柄模板。它是用index.html编写的。我只放置把手脚本部分。
<script type="text/x-handlebars" id="users">
<div>
<ul class="users-listing">
{{#each user in controller}}
<li>{{user.name}} ..... {{user.id}} ..... {{user.NameWithId}}</li>
{{else}}
<li>no users… :-(</li>
{{/each}}
</ul>
Total users: {{usersCount}}
</div>
</script>
这是我的模特
App.ApplicationAdapter = DS.FixtureAdapter;
App.User = DS.Model.extend({
name : DS.attr(),
email : DS.attr(),
bio : DS.attr(),
avatarUrl : DS.attr(),
creationDate : DS.attr()
});
这是我的控制器
App.UsersController = Ember.ArrayController.extend({
sortProperties: ['id'],
sortAscending: true, // false = descending
usersCount: function(){
return this.get('model.length');
}.property('@each'),
NameWithId: function() {
return this.get('id') + ' -> ' + this.get('name');
}.property('id', 'name')
});
执行脚本后,我可以看到ID和名称,但在NameWithId的位置,我得到只是空白 甚至我在Firefox中的Web控制台也显示无
在我的模板中,我改变了
user.NameWithId
到
user.get('NameWithId')
现在我得到Parse Error:期待'ID',得到'INVALID'
使用:
jQuery 1.10.2
车把1.0.0
Ember 1.0.0
EmberData 1.0.0-beta3
答案 0 :(得分:3)
你可以把它放在像sevenseacat所说的模型上,或者你可以使用一个itemController,它将用控制器包装数组中的每个项目,这就是你放置这个属性的地方。
App.UsersController = Ember.ArrayController.extend({
itemController: 'user'
})
App.UserController = Ember.ObjectController.extend({
NameWithId: function() {
return this.get('id') + ' -> ' + this.get('name');
}.property('id', 'name')
});
答案 1 :(得分:2)
计算属性应该在模型上,而不是控制器上。它是单个用户实例的属性,而您的控制器是一个ArrayController,用于许多用户实例(因此在先前的计算属性声明中为@each
)。