谁能解释一下backbone.js中的delegateEvents是做什么的?The documentation并没有帮助我理解。
我的确切用例是:
我有一个带有内部视图Y的主视图X。它们工作得很好,但是如果我转到主视图Z,然后回到X(重用,而不是重新创建),那么附加到Y子元素的事件就会丢失。delegateEvents解决了这个问题,但我想知道为什么。
发布于 2012-06-18 03:03:05
本质上,当您调用.remove()时,它是jQuery remove函数的代理,该函数从DOM中删除元素,以及从绑定到该元素的事件散列中删除所有关联的事件。
Backbone的视图元素仍然包含.el,但是在重新插入到DOM中时,jQuery元素丢失了所有它绑定的侦听器。
有几种解决方案:
.delegateEvents() -您现在正在做的事情<代码>H212<代码>G213希望这能有所帮助。
发布于 2012-06-18 02:54:37
delegateEvents接受视图实例的events: { ... }声明,并使用指定的回调方法将指定的事件绑定到指定的DOM元素以处理事件。
因此,呈现后的DOM树如下所示:
<div>
<a href="#" id="foo">foo</a>
</div>和如下定义的视图:
Backbone.View.extend({
events: {
"click .foo": "fooClicked"
},
fooClicked: function(e){
// handle the click, here
},
render: function(){
// render the specified HTML, here
}
});将正确处理单击"foo“链接,以便您可以在代码中响应单击。
事件声明的细目是:"eventname selector": "callback",其中“events”是任何DOM事件,比如“单击”。“选择器”是任何有效的jQuery选择器,它针对视图的el运行,以便将事件绑定到DOM元素。"callback“是在触发该DOM元素的事件时在该视图上要调用的方法的名称。
希望这能有所帮助
https://stackoverflow.com/questions/11073877
复制相似问题