Events 在一个元素上支持多个视图

Events 在一个元素上支持多个视图,events,backbone.js,view,Events,Backbone.js,View,我在同一视图上多次应用视图事件时遇到问题。我知道这是因为我将多个视图绑定到同一个el-因此,当我加载一个视图,转到另一个视图,然后返回到第一个视图时,它会在现有重影视图的基础上再次应用事件,因为它每次都从路由器创建一个新的WhateverView() 根据需要调用view.model.off(null,null,this);重置事件。不幸的是,我没有为我的任何视图使用模型。也许这是一种完全错误的方式,但现在我的视图本质上只是SPA中不同的静态页面。我最终会有实际的数据,我会使用模型/集合,但现在

我在同一视图上多次应用视图事件时遇到问题。我知道这是因为我将多个视图绑定到同一个el-因此,当我加载一个视图,转到另一个视图,然后返回到第一个视图时,它会在现有重影视图的基础上再次应用事件,因为它每次都从路由器创建一个新的WhateverView()

根据需要调用view.model.off(null,null,this);重置事件。不幸的是,我没有为我的任何视图使用模型。也许这是一种完全错误的方式,但现在我的视图本质上只是SPA中不同的静态页面。我最终会有实际的数据,我会使用模型/集合,但现在我只想在我的应用程序中呈现不同的静态页面 在某个容器中。我正在使用requirejs和文本插件,到目前为止效果非常好……除了这个事件


我还尝试调用
this.undelegateEvents()在渲染每个视图之前(以防所讨论的视图之前至少已渲染过一次),但它似乎没有任何作用。

听起来好像每次创建视图时都在将事件侦听器附加到元素。我可以通过执行以下操作在应用程序中解决此问题:

$( '#coolbutton').off('click').on('click', coolFunc);
使用事件对象,调用:

this.undelegateEvents();
this.$el.removeData().unbind();

删除视图时也会起作用。

我的视图中有以下内容:事件:{'click.collapse section':'collapseSection'},那么我应该把代码放在哪里呢?看起来您完全避免了事件对象?调试时,是否每次创建视图时都会调用collapseSection()一次?我通常会这样销毁视图:是的..如果我转到另一个视图,然后返回此视图5次,它会将函数应用于.collapse节5次。所以我点击。折叠部分,然后它会运行该功能5次。啊!此.$el.removeData().unbind();成功了。谢谢