谁能解释一下backbone.js中delegateEvents的作用吗?文档 http://backbonejs.org/#View-delegateEvents没有帮助我理解。
我的确切用例是:
我有一个主视图 X 和一个内部视图 Y。它们工作得很好,但是如果我转到主视图 Z 然后返回到 X(重用,而不是重新创建),那么附加到 Y 子元素的事件就会丢失。 delegateEvents 解决了这个问题,但是
我想明白为什么。
本质上,当你打电话时.remove()
它是 jQuery 的代理remove http://api.jquery.com/remove/函数,它从 DOM 中删除元素,以及从事件哈希中绑定到该元素的所有关联事件。
Backbone 的 View 元素仍然包含.el
,但是在 DOM 中重新插入后,jQuery 元素丢失了所有绑定的侦听器。
有以下几种解决方案:
完全销毁视图元素,包括解除所有模型/控制器事件与新的绑定destroy https://github.com/documentcloud/backbone/pull/1353方法(目前仅在github中,它将在Backbone的下一个版本中添加)并在返回时创建一个新视图(而不仅仅是缓存和重新渲染) - 我的首选方法
创建一个方法(或扩展删除)以使用 jQuerydetatch http://api.jquery.com/detach/这显然与删除相同,而不会丢失事件绑定 - 还没有这样做,但看起来它会起作用
Call .delegateEvents()
在每个渲染中 - 你现在正在做什么
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)