events - 在一个元素上 Backbone 多个 View

标签 events backbone.js view

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

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

我也试过在渲染每个 View 之前调用 this.undelegateEvents();(如果有问题的 View 之前已经至少渲染过一次)但它似乎没有做任何事。

最佳答案

这听起来像是您在每次创建 View 时都将事件监听器附加到元素。通过执行以下操作,我能够在应用程序中解决此问题:

$( '#coolbutton').off('click').on('click', coolFunc);

使用事件对象,调用:

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

删除 View 时也有效。

关于events - 在一个元素上 Backbone 多个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26894135/

相关文章:

Android,如何将 CSS 应用到 WebView 中?

jquery - 如何防止滑动触发点击?

Mockito 在 junit 中的事件

javascript - 奇怪的文字 : "#_=_" showing on the URL after successful Login to Facebook with spring social

model-view-controller - MVC - 通过ViewBag将List传递给View

android - AdMob - 未加载 admob 横幅时出现空白

javascript - JSF 调用支持 bean 方法并在 ENTER 键上重新呈现组件

javascript - 有条件地订阅/取消订阅多条消息

javascript - Requirejs,杏仁, Backbone , Handlebars

当查询传递给路由时,backbone.js 路由包含/