2012-05-29 31 views
11

Tôi có một mô hình như:Làm thế nào để loại bỏ các yếu tố trong mảng nội dung của ArrayController (Ember)

TestModel = Em.Object.create({ 
    id:'', 
    name:'' 
}) 

và ArrayController đối tượng như:

testArrayController = Em.ArrayController.create({ 
    content: [], 
    init: function() { 
     //push some object TestModel 
    } 
}); 

Tôi muốn loại bỏ một số đối tượng phụ thuộc vào id thuộc tính của một đối tượng trong mảng nội dung. Làm thế nào để làm điều đó?

Trả lời

19

Tôi sẽ sử dụng một sự kết hợp của findPropertyremoveObject, xem http://jsfiddle.net/pangratz666/rXN4E/:

App.testArrayController = Em.ArrayController.create({ 
    content: [], 

    removeItem: function(propName, value){ 
     var obj = this.findProperty(propName, value); 
     this.removeObject(obj); 
    } 
}); 

App.testArrayController.removeItem('id', 42); 
+4

FYI: điều này sẽ không hoạt động nếu bạn đang sử dụng Ember dữ liệu để lấy dữ liệu cho bộ điều khiển - mảng là không thay đổi. – outside2344

+0

@ outside2344: Tôi nghĩ điều đó phụ thuộc nếu bạn truy xuất dữ liệu từ cửa hàng bằng tìm hoặc bộ lọc. Nếu bạn nhận được nó bằng cách tìm, nó hoạt động và sau đó nó thực sự cần thiết ... – Preexo

4

tôi đã có một tình huống mà tôi đã có một bảng với một hộp kiểm bên cạnh mỗi hàng.

Tôi muốn xóa từng hàng đã được chọn khi nút được nhấp.

Mỗi hộp kiểm được liên kết với thuộc tính isSelected trên bộ điều khiển mục.

tôi đã sử dụng các chức năng removeObjects và filterProperty để loại bỏ các mục:

this.removeObjects(this.filterProperty('isSelected')); 

Đây là một jsbin với một ví dụ.

Đây là các bước quan trọng:

App.IndexController = Ember.ArrayController.extend({ 
    itemController: 'IndexItem', 
    actions: { 
    removeSelected: function() { 
     this.removeObjects(this.filterProperty('isSelected')); 
    } 
    } 
}); 

App.IndexItemController = Ember.ObjectController.extend({ 
    isSelected: true 
}); 
Các vấn đề liên quan