Одно изменение атрибута a
модели вызовет два события:
и привязка к all
означает, что ваш обработчик событий будет вызван для них обоих:
Обратные вызовы, связанные со специальным событием "all"
, будут срабатывать при возникновении любого события, и в качестве первого аргумента передается имя события.
Если вы привязываетесь только к событию change
, ваш обработчик будет вызван только для общего события "часть измененной модели", и вы не увидите change:a
, относящийся к изменению, только этот атрибут.
Например, учитывая это:
class M extends Backbone.Model
m = new M
m.on 'all', (ev) -> console.log ev
m.set a: 'b'
Вы получите change
и change:a
в консоли.
Демо: http://jsfiddle.net/ambiguous/yRDjd/
Но если вы сделаете это:
class M extends Backbone.Model
m = new M
m.on 'change', -> console.log 'the model changed'
m.on 'change:a', -> console.log 'a changed'
m.set a: 'b'
вы увидите отдельные сообщения для каждого change
события.
Демо: http://jsfiddle.net/ambiguous/wnmXe/