7

Backbone.js 中的 bind() 和 on() 方法有什么区别

on() 的文档:backbone.js 中的方法文档

bind() 的文档:underscore.js 中的绑定方法文档

两者中的哪一个应该用于绑定对象的自定义事件?

使用示例:

this.bind('myEvent', this.render, this);
this.on('myEvent', this.render, this);
4

2 回答 2

15
this.bind('myEvent', this.render, this);
this.on('myEvent', this.render, this);

bind这些是完全等价的,并且与下划线函数无关。

这是来自Backbone 源代码的一些代码:

// Aliases for backwards compatibility.
Events.bind   = Events.on;
Events.unbind = Events.off;

因此,在代码的两行中,您都调用了相同的函数。

于 2013-04-07T17:07:45.753 回答
3

下划线中的 _.bind 与 Backbone 事件对象中的绑定无关。(或下划线)

下划线中的 _.bind 用于将函数绑定到上下文(将其包装在闭包中)。因此,当调用该函数时,上下文 (this) 不会改变。

Backbone 文档明确指出事件中的 bind 方法是 on 方法的别名。那么为什么要链接到下划线中的绑定定义呢?

http://backbonejs.org/#Events-on

于 2013-04-07T17:08:14.207 回答