2013-11-23 45 views
0

我有一個用於組合框的格式化程序的用於附加列的fuelux網格視圖1。我也有另一種觀點2,那裏有菜單。點擊view2中的某個按鈕/下拉菜單,我會捕獲一個事件。骨幹訪問數據/其他視圖的事件

在view2中,我們如何訪問view1的組合框?你可能猜到了,我對開發很陌生。

+0

我剛剛通過 - http://www.benknowscode.com/2013/01/managing-events-between-multiple_3253.html。選項2更好嗎?或者木偶會更好地處理它? – skumar

回答

0

這一直是我的圖案使用的避風港:

在全局命名空間(應用程序) 定義事件調度

App.Dispatcher = _.clone(Backbone.Events); 
在視圖2

,你不想接廠景的組合框。我不確定你想在這裏做什麼,但我假設你想要在view2中單擊按鈕/下拉菜單時發生組合框發生的事情。

所以,要做到這一點,在你的view2。

view2 = Backbone.View.extend({ 
    //other view stuff 
    events: { 
    'click button': 'onClickButton' 
    }, 

    onClickButton: function() { 
    App.Dispatcher.trigger('buttonClicked', [event params you wanna pass]); 
    } 
}); 

and in view1。

view1 = Backbone.View.extend({ 
    //other view stuff 

    initialize: function() { 
    //other view initialize suff 
    App.Dispatcher.on('buttonClicked', this.handleButtionClicked, this); 
    }, 

    handleButtionClicked: function() { 
    //do stuff to combo boxes 
    } 
}); 

基本上,這個想法是,當你點擊視圖2按鈕,視圖2通知該事件通全球App.Dispatcher。 view1在App.Dispatcher上訂閱這個事件,當它觸發時,view1應該知道如何處理它。

+0

太棒了!這聽起來很棒,全球事件處理程序用於視圖間事件通信。我之前應該解釋過 - 但我真正想要的是 - 因爲view1在網格中有組合框,所以可以在view1網格中選擇多個組合框。現在view2是菜單視圖有一個下拉/按鈕 - 當點擊時 - 需要知道在view2中選擇了哪個組合框。這是我必須創建全局變量,並發現在view1組合選擇和訪問,在視圖1 ..我真的不喜歡全局池機制..應該有一些優雅的方式推。感謝你的幫助! – skumar

+0

我明白了。我看不到你的應用程序,所以我不知道將它們分成兩個不同視圖的設計決定是否正確。但就你而言,我會創建一個模型(主幹模型)來維護組合框的狀態,並將它傳遞給兩個視圖。當view1中的任何組合框發生更改時,更新模型上的屬性,並在view2中單擊按鈕時,讀取模型中的屬性以決定需要完成的操作。 –

+0

謝謝雨瑞!我會試試看,並保持這張貼。 – skumar