2012-04-29 21 views
5

imaginar que crear un objeto Ember, a continuación, añadir a un número desconocido arbitraria de controladores de array. ¿Hay una manera sencilla de destruir el objeto de modo que todos los controladores de arrays de recibir una notificación y eliminarlo?objetos destruyendo en Ember.js

http://jsfiddle.net/FcsRP/

destruya de Ember.CoreObject no parece que notificar a las colecciones que sus objetos han sido destruidos, o las colecciones no se quitan los objetos. Ni siquiera estoy seguro de si están destinados o no.

Respuesta

7

La forma más fácil que se me ocurre es la adición de un observador en la propiedad del objeto isDestroyed. De esta forma cuando se destruye algo y que la propiedad se convierte en true puede ejecutar cualquier código que usted necesita.

ver este jsFiddle: http://jsfiddle.net/ud3323/FSCyF/

Código:

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]ach.isDestroyed') 
}); 

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

obj.destroy() 

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

Hola Roy, no sé por qué no aceptaba su respuesta en el momento, pero es sin duda correcta! ¡Gracias! – user1158559