残り火オブジェクトを作成し、それを任意の未知数のアレイコントローラーに追加するとします。オブジェクトを破棄して、すべてのアレイコントローラーに通知を受け取り、オブジェクトを削除する簡単な方法はありますか?
Ember.CoreObjectからのdestroyは、オブジェクトが破棄されたことをコレクションに通知していないようです。または、コレクションがオブジェクトを削除していません。それらが意図されているかどうかさえわかりません。
残り火オブジェクトを作成し、それを任意の未知数のアレイコントローラーに追加するとします。オブジェクトを破棄して、すべてのアレイコントローラーに通知を受け取り、オブジェクトを削除する簡単な方法はありますか?
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)