关于事件的回调函数的Backbone.js

时间:2013-05-25 18:40:55

标签: backbone.js backbone-events

我正在尝试了解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])。在上面的回调函数示例中,为什么我们传递模型变量?

谢谢, 普拉特。

1 个答案:

答案 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/