簡體   English   中英

骨干視圖-跨組件通信

[英]Backbone view - Cross component communication

var BaseView = Backbone.View.extends({
});
var ComponentView = BaseView.extends({
});
var ChildView1 = ComponentView.extends({
});
var ChileView2 = ComponentView.extends({
});

我想在ChildView1ChileView2.之間進行跨組件通信ChileView2.

我想在parent(ComponentView)a _.extend({}, Backbone.Events) obj。

我在一些示例中看到了如下內容

var ComponentView = BaseView.extends(_.extend({}, Backbone.Events, {
});

PS:我正在使用組件上存在的屬性初始化另一個BackboneView的所有組件

在Backbone中,我更喜歡使用某種發布/訂閱事件模式在視圖之間進行通信。 以最簡單的形式,您的代碼將如下所示:

/* Create an Event Aggregator for our Pub/Sub */
var eventAggregator = _.extend({}, Backbone.Events);

/* Pass that Event Aggregator to our Child Views */
var childView1 = new ChildView1({ "eventAggregator": eventAggregator });

/* From here we can just bind/trigger off of eventAggregator whenever we need */
eventAggregator.bind("tellChild", function(e) { alert(e.message); });
eventAggregator.trigger("tellChild", { "message": "hello" });

注意我們如何創建一個新對象,該對象擴展自內置Backbone.Events並將其傳遞給ChildView1 在ChildView或其他引用eventAggregator的內部,您可以綁定/觸發新事件。 但是,這只是冰山一角,因為您將不再需要了解該事件處理程序,無需綁定該事件處理程序並確保您不泄漏內存即可處理。

這里沒有足夠的空間進行深入研究,因此我建議閱讀更多有關Backbone中事件聚合的信息。 我曾經使用過的所有邏輯均來自Derick Bailey在博客文章和他的著作“ Building Backbone Plugins ”(均為出色的信息來源)中寫的工作。 這些最終來自他創建木偶的工作,這是對Backbone的一個很好的稱贊。 如果您不想擔心這些問題,或者只想使用更簡單的API,我建議您使用Marionette或類似的東西來改善您的Backbone Views。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM