Ho notato che l'enumerable mixin ha proprietà calcolate che dipendono dalla proprietà '[]'
, mentre gli array ember hanno anche la proprietà '@each'
.Qual è la differenza tra la proprietà '[]' e la proprietà '@each' in ember.js?
Qual è la differenza tra a seconda di '[]'
e '@each'
?
La mia vaga comprensione (correggimi se ho torto) è che '[]'
viene attivato quando il contenuto dell'array viene sostituito. Ma questo è diverso rispetto alla proprietà stessa?
Si consideri la seguente classe:
C = Ember.Object.extend({
things: null,
watcher1: (function() {
console.log('watcher1')
}).observes('things.[]'),
watcher2: (function() {
console.log('watcher2')
}).observes('[email protected]')
});
E creare un'istanza come segue:
c = C.create({things: Ember.A(['a', 'b'])});
la seguente:
c.get('things').replace(0, 1, ['z'])
innesca watcher1
e watcher2
E la seguente:
c.get('things').setObjects(['1', '2'])
innesca anche watcher1
e watcher2
Come fa:
c.get('things').addObject('v')
Quindi c'è qualche differenza? Quando dovremmo usare l'uno contro l'altro?
Grazie! Kevin
Grazie! Molto completo e chiaro e apprezzo i jsbins. –
L'attuale documentazione ufficiale - http://emberjs.com/api/classes/Ember.Array.html#property__each rende abbastanza chiaro quando utilizzare quale. –