我一直在阅读文档和API,我很难找到以下解释:
export default Ember.Controller.extend({
collectionTotal: function() {
var games = this.get('model');
return games.length
}.property('@each')
});
.property('@each')
实际发生了什么?我知道我得到了计算属性,我不明白@each
是什么。
答案 0 :(得分:5)
什么是@each
?
@each
会观察数组中每个项目的各个属性。
例如,如果我观察users.@each.name
,我会在以下情况下收到一个事件:
users
属性被替换为例如this.set('users', ...)
users
name
属性更改您可以使用以下语法观察多个属性:users.@each.{name,email}
你无法嵌套它们。这不起作用:users.@each.friends.@each.mood
在官方文档中阅读更多内容:
回答您的问题
@each
本身没有意义。如果您只需要查看要添加或删除的项目,则可以观察[]
属性。
通常,您应该观察函数体中使用的相同属性。在您的示例中,model
和length
:
collectionTotal: function() {
var games = this.get('model');
return games.get('length');
}.property('model.length')
或等效地:
collectionTotal: function() {
return this.get('model.length');
}.property('model.length')
或等效地:
collectionTotal: Ember.computed.reads('model.length')