请问delegateEvents在backbone.js中是什么意思?文档没有帮助我理解。
我的具体使用情况是:
我有一个名为X的主视图,其中有一个内部视图Y。它们的工作非常好,但如果我转到主视图Z,然后再返回X(重用而不是重新创建),则附加到Y子元素的事件将丢失。delegateEvents可以解决这个问题,但我想知道原因。
请问delegateEvents在backbone.js中是什么意思?文档没有帮助我理解。
我的具体使用情况是:
我有一个名为X的主视图,其中有一个内部视图Y。它们的工作非常好,但如果我转到主视图Z,然后再返回X(重用而不是重新创建),则附加到Y子元素的事件将丢失。delegateEvents可以解决这个问题,但我想知道原因。
.remove()
时,它是jQuery remove函数的代理,它将从DOM中删除该元素以及绑定到该元素的事件哈希表中的所有关联事件。.el
,但重新插入DOM时,jQuery元素已失去了所有绑定的侦听器。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"链接,以便您可以在代码中响应单击事件。
events
声明的分解是:"eventname selector": "callback"
其中"eventname"是任何DOM事件,例如"click"。 "selector"是任何有效的jQuery选择器,它针对你的视图的el
运行,以绑定事件到DOM元素上。"callback"是在此视图上调用的方法名称,当该DOM元素的事件触发时。
希望这有所帮助