';[]和#x27;财产和'@每个';在ember.js中的属性?
我注意到可枚举mixin具有依赖于';[]和#x27;财产和'@每个';在ember.js中的属性?,ember.js,Ember.js,我注意到可枚举mixin具有依赖于'[]'属性的计算属性,而ember数组也具有'@each'属性 依赖于'[]'和'@each'有什么区别 我模糊的理解(如果我错了请纠正我)是当数组内容被替换时会触发'[]'。但这与取决于房产本身有什么不同吗 请考虑以下类别的问题: C = Ember.Object.extend({ things: null, watcher1: (function() { console.log('watcher1') }).observes('thin
'[]'
属性的计算属性,而ember数组也具有'@each'
属性
依赖于'[]'
和'@each'
有什么区别
我模糊的理解(如果我错了请纠正我)是当数组内容被替换时会触发'[]'
。但这与取决于房产本身有什么不同吗
请考虑以下类别的问题:
C = Ember.Object.extend({
things: null,
watcher1: (function() {
console.log('watcher1')
}).observes('things.[]'),
watcher2: (function() {
console.log('watcher2')
}).observes('things.@each')
});
我创建了一个实例,如下所示:
c = C.create({things: Ember.A(['a', 'b'])});
以下是:
c.get('things').replace(0, 1, ['z'])
c.get('things').setObjects(['1', '2'])
触发watcher1
和watcher2
以及以下各项:
c.get('things').replace(0, 1, ['z'])
c.get('things').setObjects(['1', '2'])
还触发watcher1
和watcher2
还有:
c.get('things').addObject('v')
那么有什么区别吗?我们什么时候应该使用其中一种
谢谢!
Kevin如果需要观察数组元素的属性,请使用
@each
@each
支持观察数组中元素的属性。例如,人。@each.name
。括号表示法不支持这一点。这是一本书
@each
是一个返回处理委托的。另一方面,[]
很简单
如果需要它来处理非数组可枚举项,请使用[]
根据余烬变更日志,括号表示法在余烬中被取消,取而代之的是
@each
,但随后在中重新启用。指示[]
可用于非数组枚举,例如Ember.Set
实例 当前的官方文件——清楚地说明了何时使用。