2012-04-29 12 views
5

Wyobraź sobie, że tworzę obiekt embera, a następnie dodaję go do dowolnej nieznanej liczby kontrolerów tablic. Czy istnieje prosty sposób zniszczenia obiektu, aby wszystkie kontrolery macierzy otrzymały powiadomienie i go usunąć?Niszczenie obiektów w Ember.js

http://jsfiddle.net/FcsRP/

zniszczyć od Ember.CoreObject nie wydaje się, aby powiadomić o tym, że ich zbiory obiekty zostały zniszczone lub zbiory nie usuwać swoich obiektów. Nie jestem nawet pewien, czy są przeznaczone, czy nie.

Odpowiedz

7

Najprostszy sposób, jaki mogę wymyślić to dodanie obserwatora do obiektu o wartości isDestroyed. W ten sposób, gdy coś zniszczysz, a ta właściwość stanie się true, możesz uruchomić dowolny kod, który potrzebujesz.

Zobacz ten jsfiddle: http://jsfiddle.net/ud3323/FSCyF/

Kod:

obj = Ember.Object.create({}); 

a1 = Ember.ArrayController.create({ 
    content: [], 
    destroyedObj: function() { 
     alert('destroyed obj observer in a1'); 
    }.observes('[email protected]') 
}); 
a2 = Ember.ArrayController.create({ 
    content: [], 
    destroyedObj: function() { 
     alert('destroyed obj observer in a2'); 
    }.observes('[email protected]') 
}); 

a1.pushObject(obj); 
a1.pushObject(obj); 
a2.pushObject(obj); 

obj.destroy() 

alert(a1.get('content').length) 
+0

Cześć Roy, nie wiem, dlaczego nie akceptują swoją odpowiedź w tym czasie, ale to zdecydowanie poprawna! Dziękuję Ci! – user1158559