我试图尽可能清楚地表达这一点。
我有一个显示表单的视图。我将事件处理程序绑定到提交按钮,如下所示:
events: {
'click #bsubmit': 'save'
}
在保存功能中,成功后,我会在导航离开之前注意 undelegateEvents():
...
that.undelegateEvents();
window.router.navigate('#/home');
...
所以如果有人来到这个页面,提交页面并转到(实际上是:被送回)主页,一切都很好。
但是,那里还显示了一个“主页”链接,它是顶层模板的一部分。它是这样指定的:
<a href="#/home">Home</a>
因此,如果有人来到这个页面,点击主页链接,然后(从那里)返回到这个页面,事件就会被第二次映射。现在,当有人提交表单时,它会被提交两次。
鉴于我有很多视图,并且导航可以通过多种方式发生,当导航以更高(不可控制)的方式发生时,取消委托事件的常见模式是什么?还是我做错了什么?