我想在调用事件(调整大小)时更改/修改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
}
}
提前谢谢!
答案 0 :(得分:0)
如果查看backbone.js source code,它有两个功能:
this.events
或将事件传递给其处理程序您可以使用以下任何一种:
onResize: function() {
this.events.add({"click .button": "onClickButton"});
this.delegateEvents();
}
OR
onResize: function() {
this.delegate("click", ".button", onClickButton);
// Note: this will not update this.events map and you might need to undelegate to remove
}
但是,更简洁的方法是将此事件始终作为原始事件映射和内部事件处理函数的一部分,您可以决定是要执行还是跳过。