繁体   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