2013-05-11 47 views
0

有沒有一種方便的方法在Backbone中將子/父視圖的多個級別的事件拋出/捕獲(自定義)事件?如何在BackboneJS中處理多個子視圖級別的事件

讓我解釋一下我的情況。我正在捕捉「keydown」事件,並檢查是否應該在父級別上完成一些交互。如果沒有,那麼我打電話給childView函數。我的基本視點看起來是這樣的:

var BaseView = Backbone.View.extend({ 

    keydown: function(e){ 
    return this; 
    }, 

}); 

它正常工作,直到我不會試圖拋出其他customEvents與childViews的childViews互動。順便說一下,不知道自己的存在。

我不能簡單地做下面的東西,導致我的父母甚至不知道子視圖的所有childViews。我試圖做這樣的事情:

例如。模糊subChildViews輸入

Parent.subview.subsubview.trigger('blurInput'); 

我真的相信我與我的事件pushing-「的keydown」 - 方法走錯了路, 可能有人點我朝着正確的方向?

編輯:

原始BackboneJS沒有真正建立類似的東西,但有一個模塊在那裏。 MarionetteJS是我的解決方案,它提供了我一直在尋找的一切。子視圖,模塊化邏輯和優化的交叉視圖事件系統。

上有smashingmagazine.com

回答

1

一個真棒入門教程那麼有骨幹形式從無到有沒有方便的解決方案,使嵌套的觀點是不是handeled有什麼辦法。 我可以告訴你的是設置父母關係(所以每個視圖都知道它是父母),而不是父母知道它的所有子視圖,只要視圖是事件發射器默認情況下,玩具可以做這樣的事情[僞代碼]:

父視圖:

var BaseView = Backbone.View.extend({ 

    keydown: function(e){ 
    this.trigger("custom.keydown"); 
    return this; 
    }, 

}); 

子視圖:

var ChildView = Backbone.View.extend({ 

    initialize:function(){ 
     this.parent.on("custom.keydown",this.keydown,this); 
    } 

}); 
+0

另一種方式是它傳播到全球範圍,並抓住每一個需要它的觀點,但請考慮命名空間的事件,則 – Yuriy 2013-05-11 12:17:16

相關問題