我正在从文档学习骨干,你能提供一个关于上下文如何为事件工作的例子吗?我真的不明白它们的含义如下:
要在调用回调时为此提供上下文值,请传递 可选的最后一个参数:model.on('change',this.render,this)或 model.on({change:this.render},this)。
答案 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