在骨干的listenTo()中引用“this”的是什么

时间:2016-07-25 11:24:02

标签: javascript events backbone.js

我写了一些代码......

var View = Backbone.View.extend({
...
  initialize: function () {
    this.listenTo(collection, 'add', this.addOne)
  },
  addOne : function (item) {
   this // 'this' here refers... what?
})

我读了guide
在本指南中,listenTo上的“this”是指“listener”,但我测试了上面的代码,“this”可能是视图本身

在“事件和观点”部分,
“如果使用listenTo()绑定事件,那么在回调中,这将引用侦听器。”

1 个答案:

答案 0 :(得分:1)

以下代码段来自文档 http://backbonejs.org/#Events-listenTo

listenToobject.listenTo(other, event, callback) 

告诉对象在另一个对象上侦听特定事件。使用此表单而不是other.on(事件,回调,对象)的优点是listenTo允许对象跟踪事件,并且可以稍后将它们全部删除。将始终使用object作为上下文调用回调。

view.listenTo(model, 'change', view.render);

很好地解释了this指的是调用了对象listenTo。 例如:object.listenTo(...)将对象作为上下文,即this将成为回调中的对象。

上述问题中的代码片段本质上是在视图对象上调用listenTo,因此this实际上是视图