2012-04-06 37 views
19

Câu hỏi nhanh về Sự kiện trong xương sống - có cách nào để xác định tập hợp các sự kiện toàn cầu, có thể được sử dụng lại trong các chế độ xem khác nhau không?Sự kiện toàn cầu Backbone.js

Ví dụ - giả sử tôi có một số Chế độ xem được hiển thị trên trang. Mỗi Chế độ xem có một nút sẽ mở rộng menu. Ngoài ra còn có một số yếu tố và sự kiện chung khác. Nếu không đặt logic sự kiện này vào mỗi Chế độ xem, có cách nào mà mỗi Chế độ xem này có thể kế thừa hoặc kéo các sự kiện này từ định nghĩa sự kiện chung không? Nó chắc chắn sẽ tiết kiệm thời gian và là một giải pháp sạch hơn rất nhiều bằng cách xác định các sự kiện chung ở một nơi.

Tôi đã xem các cụm từ như Event Aggregator và các mẫu Nhà máy được ném xung quanh - nhưng không chắc chắn về cách tiếp cận tốt nhất (hoặc nếu chúng đạt được những gì tôi theo sau).

Trả lời

51

Về cơ bản, bạn mô tả trình tổng hợp hoặc điều phối sự kiện, vâng. Tôi đã có một vài bài viết về xây dựng và sử dụng chúng với Backbone:

http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/

http://lostechies.com/derickbailey/2012/04/03/revisiting-the-backbone-event-aggregator-lessons-learned/

Và có rất nhiều nhiều bài viết trên web để thực hiện điều tương tự với Backbone và quán rượu khác/sub thư viện.

Nó khá đơn giản để làm trong Backbone:


vent = _.extend({}, Backbone.Events); 

và bây giờ bạn có một đối tượng vent có thể được sử dụng như một aggregator sự kiện trong suốt tất cả các quan điểm của ứng dụng của bạn và các đối tượng khác.


vent.on("some:event", function(){ 
    console.log("some event was fired"); 
}); 

vent.trigger("some:event"); 
+3

Tôi đã xem qua bài đăng tuyệt vời của bạn về nó và nghĩ đó là giải pháp thanh lịch nhất (được xem xét lại nhiều hơn)! Tôi đã theo dõi bài viết của bạn và nó hoạt động tốt - bài viết tuyệt vời bằng cách này. Tuy nhiên, điều này vẫn có nghĩa là tôi cần phải xác định nhóm các sự kiện trong mỗi View (mà chỉ đơn giản là kích hoạt các sự kiện cần thiết). Vì mỗi nhóm Chế độ xem này luôn thực hiện cùng một tác vụ (ví dụ: nút thêm hoặc chỉnh sửa), có cách nào để đơn giản hóa Chế độ xem khác hơn không? – crawf

+0

FYI, có vẻ như miền lostechies.com của bạn tự động chuyển hướng đến https, nhưng nó đang cố tải đoạn mã GitHub qua http và bị chặn. –

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