2013-05-25 3 views
1

Я пытаюсь понять Backbone.js и у меня есть вопрос, связанный с приведенным ниже примером -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(); 

на событие имеет синтаксис - onobject.on (событие, обратный вызов , [контекст]). В приведенном выше примере в функции обратного вызова почему мы передаем модельную переменную?

Thanks, prat.

ответ

6

Хребет model.change event передает 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/

Смежные вопросы