В чем разница между свойством [] и свойством @each в ember.js?
Я заметил, что перечисляемый миксин имеет вычисляемые свойства, которые зависят от'[]'
свойство, в то время как тлеющие массивы также имеют'@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'])
триггерыwatcher1
а такжеwatcher2
И следующее:
c.get('things').setObjects(['1', '2'])
также вызываетwatcher1
а такжеwatcher2
Как делает:
c.get('things').addObject('v')
Так есть ли разница? Когда мы должны использовать один против другого?
Спасибо! Kevin