我在下面写了一些代码...

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()绑定的,则在回调中这将指向侦听器。”

最佳答案

以下摘录来自文档
http://backbonejs.org/#Events-listenTo

listenToobject.listenTo(other, event, callback)


告诉一个对象侦听另一个对象上的特定事件。使用此形式而不是other.on(event,callback,object)的优点是,listenTo允许对象跟踪事件,以后可以一次将其全部删除。回调将始终以object作为上下文进行调用。

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


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

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

关于javascript - 什么在主干的listenTo()中引用“this”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38566466/

10-11 15:03