Zauważyłem, że przeliczalny mixin ma obliczone właściwości, które zależą od właściwości '[]'
, a tablice ember również mają właściwość '@each'
.Jaka jest różnica między właściwością "[]" a własnością "@each" w pliku ember.js?
Jaka jest różnica między w zależności od '[]'
i '@each'
?
Moje ogólnikowe zrozumienie (popraw mnie, jeśli się mylę) jest to, że '[]'
jest wyzwalane, gdy zawartość tablicy zostanie zastąpiona. Ale czy to jest inne niż w zależności od samej nieruchomości?
Rozważmy następujące klasy:
C = Ember.Object.extend({
things: null,
watcher1: (function() {
console.log('watcher1')
}).observes('things.[]'),
watcher2: (function() {
console.log('watcher2')
}).observes('[email protected]')
});
I utworzyć instancję w następujący sposób:
c = C.create({things: Ember.A(['a', 'b'])});
Poniższy:
c.get('things').replace(0, 1, ['z'])
wyzwala watcher1
i watcher2
oraz następujące:
c.get('things').setObjects(['1', '2'])
wyzwala również watcher1
i watcher2
podobnie jak:
c.get('things').addObject('v')
Więc jest jakaś różnica? Kiedy powinniśmy użyć jednego z drugim?
Dzięki! Kevin
Dzięki! Bardzo dokładny i jasny i doceniam jsins. –
Obecna oficjalna dokumentacja - http://emberjs.com/api/classes/Ember.Array.html#property__each sprawia, że całkiem jasne, kiedy używać. –