簡體   English   中英

刪除Backbone視圖的所有事件偵聽器

[英]Remove all event listeners of a Backbone view

有沒有辦法刪除骨干視圖實例化的所有事件偵聽? 例如,假設我有以下HTML / JavaScript。 點擊#box后,我想要一個彈出窗口打招呼。

<div id="box" style="height: 100px; width: 100px; background-color: red"></div>

var Listener = Backbone.View.extend({
    el: "#box",
    events:  {
        'click #box' : 'hello'
    },
    hello: function () {
        alert('hello!');
    }
})

var listener = new Listener();

現在,我想刪除事件監聽器。 將偵聽器設置為其他內容不起作用:

listener = ''; // doesn't work

如何刪除事件監聽器?

視圖中的任何位置:

this.undelegateEvents();

然后,您可以使用delegateEvents();在以后手動重新綁定事件delegateEvents();

我使用添加到Backbone.View原型的方法來輕松清理視圖:

Backbone.View.prototype.close = function() {
    this.undelegateEvents();
    this.remove();
}

// internal usage
this.close();

// external usage
myView.close();

編輯19/07/2013

Backbone .listenTo().listenTo()方法添加到視圖中,從而可以在刪除視圖時輕松取消綁定外部事件。

你可以在這里閱讀更多:

暫無
暫無

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

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