2011-11-21 32 views
10

Trong this stackoverflow post tôi đọc về lọc các bộ sưu tập xương sống và sử dụng các tập con.Triển khai Backbone.Subset.js trong Backbone.js để lọc Mô hình từ Bộ sưu tập gốc

Một câu trả lời (bằng xe trượt tuyết) đề xuất sử dụng backbone.subset.js (usage example).

Tôi không thể tìm thấy bất kỳ tài nguyên nào khác trên backbone.subset.js và tôi đã không triển khai nó vào dự án của mình.

Có vẻ như backbone.subset.js là giải pháp hoàn hảo cho những gì tôi đang cố gắng đạt được.

(Có một "cha mẹ" bộ sưu tập chứa tất cả các mô hình bất cứ lúc nào, và tùy thuộc vào người dùng nhập vào lọc các mô hình có liên quan từ bộ sưu tập phụ huynh vào một bộ sưu tập backbone.subset.)

"cha mẹ" My bộ sưu tập, giữ tất cả công việc:

var TasksAll = Backbone.Collection.extend({ 
    url: '/tasks', // the REST url to retrieve collection data 
    model: Task // the models of which the collection consists of 
}); 
var allTasks = new TasksAll(); 

Bây giờ tôi muốn tạo bộ sưu tập tập hợp con cho ví dụ nhiệm vụ nơi task.status = 0:

var TasksTrash = new Backbone.Subset({ 
    superset: allTasks, 
    filter: function(Task) { 
     return Task.isTrash(); 
    } 
}); 
var trashTasks = new TasksTrash(); 

Trong khi bên trong mô hình công tác, phương pháp "isTrash" trả về true nếu:

this.get('status') == 0 

a) Có hơn bất kỳ tài nguyên trên backbone.subset.js ?

b) Làm cách nào để triển khai kịch bản trên?

c) Tôi có thể chuyển các tùy chọn 'superset' và 'filter' làm tham số cho hàm init Back.Subset không?

d) Tôi đã xem mã backbone.subset.js, khi tôi đặt lại 'cha mẹ của tôi Bộ sưu tập tập hợp con của tôi Bộ sưu tập sẽ được cập nhật ngay lập tức, phải không?

PS: Tôi khá mới đối với Backbone. Cảm ơn bạn đã giúp đỡ.

+1

https://github.com/masylum/Backbone.Subset phiên bản này trông được duy trì nhiều hơn phiên bản pastie của bạn. (Tôi cũng mới là xương sống, vì vậy không thể trả lời các câu hỏi khác của bạn) – number5

Trả lời

2

Nhìn vào nguồn cho xương sống-tập hợp con, có vẻ như mặc dù có một cái móc pre-khởi mà bạn có thể sử dụng để làm cho 'sàng' hoặc bộ lọc có sẵn như là một tùy chọn hoặc đối số:

https://github.com/masylum/Backbone.Subset/blob/master/backbone.subset.js#L50

đối với cung cấp cha mẹ như một cuộc tranh cãi, có một miếng vá nổi bật thêm rằng chức năng chính xác:

https://github.com/masylum/Backbone.Subset/pull/5

với nó, bạn có thể vượt qua trong cha mẹ như một tùy chọn, nếu nó không phải là một lựa chọn thư viện sẽ rơi trở lại để tìm kiếm nó trên đối tượng Prototype

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