documentcloud/backbone — pull request #893 by braddunbar (2012-01-27 19:15:43+00:00)
Title: Fire `'change:attr'` from `change`

I think that calling `set` multiple times with `silent` and then calling `change` to wrap up is a great pattern but I'm always hesitant to use it because `'change:attr'` handlers are skipped. By triggering `'change:attr'` from `change`, we can notify all listeners.

model.set({x: x}, {silent: true});
// ...
model.set({y: x}, {silent: true});
// ...
model.change(); // Doesn't trigger `'change:x'` or `'change:y'`.

I realize that this would change the existing behavior that `'change:attr'` can be triggered multiple times for multiple values before `change` is triggered but I think triggering once with the final value is more useful. Is there some utility in getting each value that I'm missing?