在Backbone.js中使用后退按钮后多次触发事件

seb*_*eli 3 javascript javascript-framework dom-events backbone.js

我正在构建一个Backbone应用程序,我遇到了这个奇怪的问题.在州A(路线:""),我有一个这样的观点:

var view = Backbone.View.extend({
    events : {
         "click a.continue" : "next"
    },

    next : function(e) {
       //Some stuff
       Backbone.history.navigate("/page2");
    }
});
Run Code Online (Sandbox Code Playgroud)

一旦我用" 继续 "类点击锚点,我就被重定向到状态B(路由:"/ page2").如果我单击浏览器的后退按钮,然后单击锚点,调试我注意到下一个函数被触发两次.实际上,如果我继续来回,事件被触发的次数会不断增加.

任何线索?

提前致谢

Der*_*ley 9

你有一个僵尸视图闲逛.

它的要点是,当您实例化并显示第二个视图("状态B")时,您不会丢弃第一个视图.如果您有任何绑定到视图的HTML或视图模型的事件,则需要在关闭表单时清除它们.

我写了一篇详细的博客张贴这一点,在这里:http://lostechies.com/derickbailey/2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/

请务必阅读评论,因为"Johnny O"提供了另一种实现方式,我认为非常出色.