在Ember.js中销毁对象

时间:2012-04-29 22:39:42

标签: javascript ember.js destroy

想象一下,我创建了一个ember对象,然后将其添加到任意未知数量的数组控制器中。是否有一种简单的方法来销毁对象,以便通知所有阵列控制器并将其删除?

http://jsfiddle.net/FcsRP/

从Ember.CoreObject中销毁似乎不会通知集合它们的对象已被销毁,或者集合没有删除它们的对象。我甚至不确定他们是否有意。

1 个答案:

答案 0 :(得分:7)

我能想到的最简单的方法是在对象的isDestroyed属性上添加一个观察者。这样,当您销毁某些内容并且该属性变为true时,您可以运行所需的任何代码。

请参阅此jsfiddle:http://jsfiddle.net/ud3323/FSCyF/

代码:

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

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

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

obj.destroy()

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