С учетом следующего фрагмента:
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
кажется пустой тратой.)