簡體   English   中英

Backbonejs,在(調整大小)事件調用時更改View上的事件,而無需重新加載或重新呈現頁面

[英]Backbonejs, changing events on View upon a (resize) event call without reloading or re-rendering page

我想在調用事件(調整大小)時更改/修改View模塊上的事件偵聽器。 此目的是為了實現有關調整瀏覽器大小和獲取網站的移動視圖且不刷新頁面的功能。 調整大小時,如果檢測到斷點,我想添加一個事件。 我可以做這樣的事情嗎?

eventOptions = { "click .item" : "onExpand", "click .panel" : "onPanelExpand"};

module.exports = View.extend({
     className: 'results',
     events: eventOptions,
     initialize: function (options) {
        $(window).on('resize', _.bind(this.onResize, this));
     },

     ....
     ....
     onResize: function() {
        // add to this.events
        this.events.add({"click .button": "onClickButton"});
        // refresh events without reloading page
     }

}

先感謝您!

如果您查看ribs.js源代碼 ,它具有兩個功能:

  1. this.events () -將this.events或傳遞的事件重新綁定到其處理程序
  2. proxy()-將單個事件偵聽器添加到視圖的元素

您可以使用以下兩種之一:

onResize: function() {
    this.events.add({"click .button": "onClickButton"});
    this.delegateEvents();
}

要么

onResize: function() {
    this.delegate("click", ".button", onClickButton);
    // Note: this will not update this.events map and you might need to undelegate to remove
}

但是,更干凈的方法是始終將此事件保留為原始事件映射的一部分,並保留在事件處理程序函數內部,您可以決定是執行還是跳過。

暫無
暫無

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

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