我正在尝试了解Backbone.js,我有一个与以下示例相关的问题 -
var Sidebar = Backbone.Model.extend({
promptColor: function() {
var cssColor = prompt("Please enter a CSS color:");
this.set({color: cssColor});
}
});
window.sidebar = new Sidebar;
sidebar.on('change:color', function(model, color) {
$('#sidebar').css({background: color});
});
sidebar.set({color: 'white'});
sidebar.promptColor();
on事件具有语法 - onobject.on(event,callback,[context])。在上面的回调函数示例中,为什么我们传递模型变量?
谢谢, 普拉特。
答案 0 :(得分:6)
Backbone model.change event传递3个你可以(可选)使用的回调参数:
model.on("change:[attribute]", function(model, value, options), [context]);
您的代码使用前两个。当颜色发生变化时,回调将获得更改的模型和新颜色:
sidebar.on('change:color', function(model, color) {
$('#sidebar').css({background: color});
});
这也可以通过将模型设置为回调的this
上下文来实现:
sidebar.on('change:color', function() {
$('#sidebar').css({background: this.get('color')});
}, sidebar);
请参阅此处的两个示例:http://jsfiddle.net/b7y3W/2/