2011-10-20 30 views
22

Tôi có chế độ xem chính và bên trong chế độ xem chính mà tôi có chế độ xem khác được tạo khi tôi nhấp vào nút. Có cách nào để lắng nghe sự kiện tùy chỉnh trên chế độ xem gốc cho sự kiện được kích hoạt từ chế độ xem con không. Tôi đã cố gắng để làm điều đó thông qua tài sản el bằng cách sử dụng jQuery kích hoạt nhưng điều đó đã không làm việc khá.kích hoạt sự kiện từ chế độ xem này sang chế độ xem khác trong xương sống

+1

Một mã ví dụ nhỏ sẽ hữu ích. – erturne

Trả lời

43

Ya, không sao ... bạn sẽ muốn sử dụng mẫu "Event Aggregator". Đó là 1 dòng mã trong Backbone:

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

Bây giờ bạn có thể kích hoạt/bind với các sự kiện từ các đối tượng này, ở khắp mọi nơi trong ứng dụng của bạn, và có phần khác nhau của ứng dụng của bạn giao tiếp với nhau một cách tách riêng .

Tôi sử dụng LOT này!

Tôi cũng viết blog thêm về nó ở đây: http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/

+14

+1. Tôi lấy nó một bước xa hơn và tiêm bộ tổng hợp sự kiện vào mỗi khung nhìn: 'Backbone.View.prototype.eventAggregator = _.extend ({}, Backbone.Events);'. Bằng cách đó, mỗi lượt xem sẽ nhận được trình tổng hợp sự kiện mỗi khi nó được xây dựng. –

+3

Không phải trình tổng hợp sự kiện của bạn chỉ là "mô hình trạng thái chế độ xem" được đơn giản hóa? Sẽ không 'viewModel = new Backbone.Model()' bởi thanh lịch hơn? Ít nhất theo cách đó, các chế độ xem khác nhau có thể liên kết với * thay đổi * trong mô hình chế độ xem, thay vì các sự kiện tùy ý. Ví dụ: 'viewModel.bind ('change: selectedFoo', aView.render)' vs 'eventAgg.bind ('selectedFooChanged', aView.render)'. Suy nghĩ? –

+2

@crescent fresh - no. một mô hình có ý nghĩa ngữ nghĩa, là một biểu diễn trạng thái của một số thực thể. nó có các thuộc tính và phương thức điều khiển các thuộc tính đó. một tập hợp sự kiện là một đối tượng không trạng thái mà chỉ điều phối các phần của hệ thống, thông qua việc sử dụng các sự kiện, cho phép một kiến ​​trúc được tách rời hơn. http://martinfowler.com/eaaDev/EventAggregator.html –

2

Đây là cách tiếp cận khác, đó có thể là trực quan hơn cho những người đang tìm kiếm một cách đơn giản để "bong bóng" sự kiện lên từ một cái nhìn trẻ một cái nhìn mẹ :

https://github.com/dgbeck/backbone.courier

có một số cuộc thảo luận trong readme về nó như thế nào so với tập hợp sự kiện.

0

Lăn "bộ tổng hợp sự kiện" hoặc hòa giải hoặc pubsub của bạn (dễ như mô tả ở trên) là không cần thiết vì Backbone kết hợp đối tượng Events trực tiếp với đối tượng Backbone trong không gian tên của chúng. Dưới đây là link đến mã nguồn và tài liệu của họ về việc triển khai.

Cho phép đối tượng Backbone hoạt động như một xe buýt sự kiện toàn cầu, cho những người muốn “pubsub” toàn cầu ở một nơi thuận tiện.

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