С учетом следующего фрагмента:
var m = new Backbone.Model({
name: 'joshua'
});
m.set('name', 'something else');
Если я теперь звоню m.hasChanged() или m.hasChanged('name'), я получаю false. Почему? Я понимаю, что оба из них должны возвращать true.
m.changedAttributes() также возвращает false.
Вот скрипка, которая иллюстрирует то, что я делаю, и ожидаю: http://jsfiddle.net/9cvVv/88/
EDIT: Похоже, что если вы не передадите { silent: true; } методу set(), тогда он запустит событие change на вашей модели, которое очистит changedAttributes() и т.д. По существу эти свойства отслеживают изменения только с момента последнего запуска события change.
Я прочитал это в документации, но на самом деле не понял его вначале.
Мне это не кажется очень полезным. Я был бы признателен за любое объяснение того, почему это работает так, как оно есть, и лучший способ добиться желаемого результата. (Прохождение {silent: true; } и отказ от использования события change кажется пустой тратой.)