В чем разница между свойством [] и свойством @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

Ответы на вопрос(1)

Ваш ответ на вопрос