我想尽可能清楚地说明这一点。undelegating事件处理程序'失去重点'
我有一个视图,显示一个窗体。我绑事件处理程序的提交按钮这样的:
events: {
'click #bsubmit': 'save'
}
在保存功能,如果成功,我照顾到undelegateEvents()之前,我导航离开:
...
that.undelegateEvents();
window.router.navigate('#/home');
...
因此,如果有人来到这个页面,提交页面并返回(其实是回传)主页,都很好。
但是,此处还显示一个“主页”链接,其中显示顶级模板的哪一部分。它被指定这样的:
<a href="#/home">Home</a>
因此,如果有人谈到这个页面,点击主页链接,(从那里)返回到该页面,该事件被映射了第二次。现在当有人提交表单时,它会被提交两次。
鉴于我有很多视图,并且导航可能以多种方式发生,导航发生在更高(不可控)方式时,undelegateEvents的常见模式是什么?或者我在做一些根本性错误?
每次要导航到主页时,是否要调用that.undelegateEvents()? – Pramod
我正在寻找一种方法,以便在任何有意外的导航时从任何视图中调用undelegateEvents()。在家中,可以打开view1,view2等,从每个视图中都可以返回到主页。每次我们需要从视图中取消undelegateEvents,或者找到一些其他方式来取消关闭事件(从视图外部)。这就是为什么在标题中失去焦点。 –
也许您可以使用Backbone.Events在发生'意外'情况时触发事件并让回调监听事件。在回调中,您可以undelegateEvents() – Pramod