1

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

谢谢,普拉特。

4

1 回答 1

6

Backbone model.change 事件传递了 3 个您可以(可选)使用的回调参数:

model.on("change:[attribute]", function(model, value, options), [context]);

您的代码使用其中的前 2 个。当颜色改变时,回调获取改变的模型和新颜色:

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/

于 2013-05-25T19:49:28.057 回答