计算属性和@每个
Computed Properties and @each
我一直在阅读文档和API,很难找到以下内容的解释:
export default Ember.Controller.extend({
collectionTotal: function() {
var games = this.get('model');
return games.length
}.property('@each')
});
.property('@each')
实际发生了什么?我知道我正在取回计算的属性,我不明白@each
是什么。
什么是@each
@each
观察数组中每个项的单独属性。
例如,如果我观察到users.@each.name
,我将收到一个事件,如果:
users
属性被替换,例如this.set('users', ...)
- 在
users
中添加或删除项目 - 任何项的
name
属性都会更改
您可以使用以下语法观察多个属性:users.@each.{name,email}
你不能给它们筑巢。这将不起作用:users.@each.friends.@each.mood
阅读更多官方文档:
- 计算属性和使用@each聚合数据
- Ember.ArrayProxy类
回答您的问题
@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')
相关文章:
- Ember组件:将attr绑定到每个属性中
- 我怎样才能得到“;类型“;集合中每个属性的
- 如何从每个标签中删除每个属性
- 从对象中提取每个属性的 1
- 如何转换我的 js 代码,以便对象的每个属性都通过输入值和单选按钮值更新
- 将 Json 对象映射到每个属性类和数据
- 如何将数组取消移动到对象的每个属性中
- 在 IE8 中为对象中的每个属性添加附加属性的最佳方法是什么?
- 挖空“with”绑定:每个属性到多个控件
- AngularJS - 将属性传递给指令的问题 - 为每个属性接收未定义的值
- 如何在MongoDB MapReduce JavaScript查询中引用对象数组中对象的每个属性
- 在样式对象中的每个属性上迭代
- 如何在只知道attr值的情况下找到对象的每个属性
- 如何循环遍历嵌套对象,使用for in循环并返回连接的每个属性字符串
- 通过在json对象的每个属性中找到的索引来排序json对象的最佳方法是什么?
- 访问array - ng类中的每个属性
- 将具有相同属性的两个对象的方法合并到每个属性的数组中
- 按名为“数据字母”的每个属性按字母顺序排序
- jQuery / JavaScript - 如何在 0.0251 和 0.4070 之间设置随机值(每个属性的不同值)
- 在map()方法中更改对象数组中每个属性的值