5

trình xử lý sự kiện là tốt khi bạn có chế độ xem tham chiếu chế độ xem khác và lắng nghe sự kiện của nó, đó là cách hoàn hảo để tách và sử dụng lại.Giao tiếp giữa các kiểu thiết kế lượt xem với các sự kiện

vấn đề mặc dù đôi khi tôi có lượt xem không được tham chiếu nên tôi sử dụng Event Aggregator là thông báo toàn cầu để biết nếu có điều gì đó xảy ra ... nhưng điều đó có vẻ không đúng khi tôi chỉ muốn nghe quan điểm của trẻ em tham chiếu, một cái gì đó giống như sự kiện bubbling trong phân cấp DOM.

nhưng hãy để tôi nói rằng tôi có phân cấp hình ảnh như:

  • ParentView
    • ChildView
      • ChildView
        • ModalView

Tôi muốn biết trong ParentView khi ModalView gây nên một sự kiện ... Tôi không thể sử dụng sự kiện bọt vì ModalView không có trong hệ thống phân cấp DOM cùng, vì vậy nên sử dụng Event Agregator trong trường hợp này hay cái gì khác? Tôi thực sự muốn bong bóng sự kiện đó có thể phù hợp trong trường hợp của tôi.

Trả lời

2

Nếu bạn không thể sử dụng thứ bậc của DOM và bạn không muốn sử dụng trình tổng hợp sự kiện, bản năng đầu tiên của tôi là bạn cần xây dựng hệ thống phân cấp của riêng mình vào chế độ xem.

Bạn có thể xem backbone.courier để biết cách triển khai hệ thống bong bóng sự kiện của riêng bạn.

Backbone.courier uses the DOM to detect parent views nhưng bạn có thể triển khai phương pháp của riêng mình để phát hiện cha mẹ.

Vì vậy, có thể thực hiện được nếu không có tổng hợp sự kiện hoặc DOM, nhưng tôi nghĩ bạn sẽ kết thúc việc tạo và quản lý phân cấp của riêng mình. Vì chúng ta đã có DOM, mùi này. Nó chắc chắn sẽ làm cho tôi đặt câu hỏi: "tôi thực sự cần phải bong bóng sự kiện này?".

Ví dụ của bạn, giải pháp đơn giản nhất có thể để cung cấp cho bạn ModalView một tham chiếu đến ParentView và chỉ cần gọi parentView.listener() khi thậm chí bạn là bắn vào ModalView. Bạn có thực sự cần nó để bong bóng thông qua các trẻ em? Điều này thực sự cần phải được tách rời? Có thể bạn đang quá hạn chế khi bạn cho rằng bạn không có tham chiếu đến chế độ xem khác của mình.

Đó là những câu hỏi tôi tự hỏi bản thân mình. Mặc dù nó có vẻ hiển nhiên nó có thể là giải pháp tốt nhất:

modalView.container = parentView; 

modalView.myEventHandler = function(e) { 
    this.container.myEventHandler(e); 
} 
+0

cảm ơn người đàn ông, tôi nghĩ bạn đúng .. trong trường hợp của tôi giải pháp tốt nhất có thể là một ModalView và tham khảo người gọi/người trình bày có ý nghĩa .. .khi ModalView được thực hiện và kích hoạt trình diễn được gọi là ChildView sâu nhất và nó kích hoạt bong bóng để thông báo cho ParentView – mateusmaso