2012-05-21 50 views
4

我創建一個模式對話框這樣聽身體點擊與Backbone.js的

window.NewPageModalView = Backbone.View.extend({ 

    template: _.template($('#view-template-new-page-dialog').html()), 

    el: $('div#main'), 

    events: { 
     'click input[type=radio]': 'newPage' 
    }, 

    newPage: function (event) { 
     $(event.currentTarget).closest('form').submit(); 
    }, 

    initialize: function() { }, 

    render: function() { 
     $(this.el).append(this.template()); 
     return this; 
    } 

}); 

,然後一個視圖中創建它像這樣

addPage: function (event) { 
    event.preventDefault(); 
    var modal = new NewPageModalView(); 
    modal.render(); 

} 

另一種觀點認爲這裏面的工作方式很棒,但是如果我想要關閉點擊身體或按下轉義鍵時的對話框,最好的方法是什麼?

回答

7

一般來說,當你使用事件散列來綁定骨幹事件時,它們被委託給視圖的el,但是你仍然可以將事件綁定到initialize方法中的其他東西(在你的情況下是body)。

initialize: function() { 
    $('body').bind('click', yourfunction); 
} 

編輯: 作爲@muistooshort提到,你會希望確保取消綁定也是事件。

+0

好的,我認爲我可以使用骨幹事件來連接它,但我想它只能綁定到視圖el,就像你說的那樣。 – Marcus

+1

你也想從'body'的某個地方解除綁定。 –

+0

你也可以將你的意見設定爲身體,但這可能不是你想要去做的方式。 – Jack