我有一个这样的模型:
App.Category = DS.Model.extend({
title: DS.attr('string'),
items: DS.hasMany('item', {async: true}),
itemCount: function() {
return this.get('items').get('length');
}.property('items')
});
似乎我不能使用"属性"如果我想在每次用户添加或删除项目时都更新UI。
据我所知,我应该使用"观察",但当我用它代替"属性"把手{{itemCount}}标签只是将函数本身渲染为字符串。
非常感谢任何有关正确渲染的帮助。
答案 0 :(得分:1)
我认为你可以简单地使用:
{{items.length}}
在你的车把模板中。
绝对不需要观察者,计算属性会自行更新。
如果你真的想要一个名为itemCount的计算属性,它将是:
itemCount: function() {
return this.get('items.length');
}.property('items.length')
甚至更好:
itemCount: Ember.computed.alias('items.length')
答案 1 :(得分:1)
就像@ florent-blanvillain所说,只需使用Ember.computed.alias
。但是在将来,当基于数组编写计算属性时,您需要使用@each
语法来使其响应属性值的更改:
itemCount: function() {
return this.get('items').filterBy('isSelected');
}.property('items.@each.isSelected')
这样的事情。有关详细信息,请参阅the docs on computed properties。