想象一下,我创建了一个 ember 对象,然后将其添加到任意未知数量的数组控制器中。有没有一种简单的方法来销毁对象,以便所有数组控制器都收到通知并将其删除?
来自 Ember.CoreObject 的 destroy 似乎没有通知集合它们的对象已被销毁,或者集合没有删除它们的对象。我什至不确定他们是否有意。
想象一下,我创建了一个 ember 对象,然后将其添加到任意未知数量的数组控制器中。有没有一种简单的方法来销毁对象,以便所有数组控制器都收到通知并将其删除?
来自 Ember.CoreObject 的 destroy 似乎没有通知集合它们的对象已被销毁,或者集合没有删除它们的对象。我什至不确定他们是否有意。
我能想到的最简单的方法是在对象的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)