0

我正在阅读一个教程,该教程建议可以通过如下视图捕获事件:

var View = Backbone.View.extend({
   el: $('#element'),
   events: {},
   render: function(){}
});

似乎没有与此事件对象关联的任何文档。它已被弃用还是已过时?或者我只是找错地方了:http: //backbonejs.org/

4

1 回答 1

3

来自View.delegateEvents

delegateEvents delegateEvents([events])
使用 jQueryon函数为视图中的 DOM 事件提供声明性回调。如果未直接传递事件哈希,则this.events用作源。事件以{"event selector": "callback"}. 回调可以是视图中方法的名称,也可以是直接的函数体。省略选择器会导致事件绑定到视图的根元素 ( this.el)。默认情况下,delegateEvents在 View 的构造函数中为您调用,因此如果您有一个简单的事件哈希,您的所有 DOM 事件将始终已连接,您将永远不必自己调用此函数。

events 属性也可以定义为返回事件哈希的函数,以便更容易以编程方式定义事件,以及从父视图继承它们。

与手动使用 jQuery 在渲染期间将事件绑定到子元素相比,使用delegateEvents提供了许多优势。所有附加的回调在传递给 jQuery 之前都绑定到视图,因此当调用回调时, this 继续引用视图对象。再次delegateEvents运行时,可能使用不同的事件哈希,所有回调都将被删除并重新委托 - 对于在不同模式下需要表现不同的视图很有用。

于 2013-05-02T12:56:25.920 回答