2012-03-30 32 views
6

Ứng dụng Backbone mà tôi đang phát triển có một bộ sưu tập và mô hình cũng như các chế độ xem được liên kết cho mỗi mục.Các sự kiện xương sống khi bắn mô hình trên bộ sưu tập (Bắn đôi)

https://gist.github.com/2255959

Khi tôi bấm vào PostView, bất ngờ, sự kiện cháy trên bộ sưu tập mà không cần bất kỳ dây.

Tôi figured tôi cần phải ràng buộc một sự kiện với mô hình, sau đó có lửa một sự kiện trên bộ sưu tập. đây không phải là trường hợp à? Liệu một bộ sưu tập tự động kế thừa các sự kiện đã kích hoạt các mô hình con của nó?

Tôi không chắc chắn, nhưng tôi nghĩ rằng nó có liên quan đến các chế độ xem lồng nhau và có thể sự kiện đang bị ràng buộc ở cả hai nơi thay vì chỉ bên trong el.

Trả lời

14

Từ fine manual:

Bất kỳ sự kiện được kích hoạt trên một mô hình trong bộ sưu tập cũng sẽ được kích hoạt vào bộ sưu tập trực tiếp, cho thuận tiện.

Vì vậy, bộ sưu tập sẽ nghe các sự kiện trên tất cả các mô hình của nó và chuyển tiếp chúng.

Ví dụ, cho một tập đơn giản như thế này:

class M extends Backbone.Model 

class C extends Backbone.Collection 
    model: M 

c = new C 
c.on('change', (model, opts) -> console.log('Change on collection')) 

Làm c.first().set(...) sẽ kích hoạt xử lý sự kiện.

Bản trình diễn: http://jsfiddle.net/ambiguous/wwjnK/

+1

Bạn có biết điều này có thể được áp dụng không? Vì vậy, tôi kích hoạt một sự kiện trong một bộ sưu tập và sau đó tuyên truyền sự kiện này cho từng đối tượng mô hình trong bộ sưu tập? – dombesz

+1

@dombesz: Tôi nghĩ bạn phải làm điều đó bằng tay, nhưng các phương pháp Underscore trộn lẫn tôi vào các bộ sưu tập sẽ làm cho nó trở thành một lớp lót nhanh. –

+0

Tôi chỉ phát hiện ra rằng nếu tôi kích hoạt một sự kiện trên một mô hình, cùng một sự kiện sẽ được kích hoạt trên bộ sưu tập. – dombesz

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