Backbone的事件上下文如何工作?

时间:2016-05-24 00:10:41

标签: backbone.js

我正在从文档学习骨干,你能提供一个关于上下文如何为事件工作的例子吗?我真的不明白它们的含义如下:

  

要在调用回调时为此提供上下文值,请传递   可选的最后一个参数:model.on('change',this.render,this)或   model.on({change:this.render},this)。

1 个答案:

答案 0 :(得分:3)

这是事件监听器。

例如,

model.on('change', this.render, this)

第一个参数是事件类型:例如,在这种情况下,如果事件发生,则“更改”。

第二个参数是您要调用的函数。假设模型已经改变,请调用此函数。

第三是背景。 ('this')表示您单击的上下文。例如,如果您在输入框中单击,则此。$ el将是输入框。如果你不提这个。你的'this'将是窗口对象。

例如:

var SomeModelView = Backbone.View.extend({
  initialize: function() {
    this.model.on('change', this.render, this);
  },
  render: function() {
    // render a template
    console.log("Template Rendered");
  }
});

JSFiddle:http://jsfiddle.net/8AH3t/169/

警告:

始终建议使用this.listenTo而不是使用this.model.on。

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

<强>为什么吗

  

调用.remove()方法时,“更改”事件处理程序(我们的   渲染功能)仍然是绑定的。所以虽然DOM元素可能是   删除后,视图对象本身永远不会从内存中释放。

来源: http://ozkatz.github.io/avoiding-common-backbonejs-pitfalls.html