2012-04-29 61 views
5

Hãy tưởng tượng tôi tạo một đối tượng ember, sau đó thêm nó vào một số lượng không xác định các bộ điều khiển mảng. Có một cách đơn giản để phá hủy đối tượng để tất cả các bộ điều khiển mảng được thông báo và loại bỏ nó?Phá hủy các đối tượng trong Ember.js

http://jsfiddle.net/FcsRP/

phá hủy từ Ember.CoreObject dường như không thông báo cho các bộ sưu tập mà đối tượng của họ đã bị phá hủy, hoặc những bộ sưu tập không loại bỏ đối tượng của họ. Tôi thậm chí không chắc là họ có ý hay không.

Trả lời

7

Cách dễ nhất mà tôi có thể nghĩ đến là thêm người quan sát vào thuộc tính isDestroyed của đối tượng. Bằng cách đó khi bạn phá hủy một cái gì đó và tài sản đó trở thành true bạn có thể chạy bất kỳ mã nào bạn cần.

Xem jsfiddle này: http://jsfiddle.net/ud3323/FSCyF/

Code:

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

Hi Roy, không biết tại sao tôi không chấp nhận câu trả lời của bạn tại thời điểm đó, nhưng nó chắc chắn đúng! Cảm ơn bạn! – user1158559

Các vấn đề liên quan