В Backbone, когда я устанавливаю для атрибута модели то же значение, что и раньше, события «изменения» не запускаются.
Мой вид:
initialize: function() {
this.$lastRollResult = this.$el.find('#lastRollResult');
this.listenTo(this.model, 'change:lastRoll', this.render);
},
render: function() {
this.$lastRollResult
.html(this.model.get('lastRoll'))
.addClass('shaking');
var self = this;
setTimeout(function() {
self.$lastRollResult.removeClass('shaking');
}, 1000);
},
events: {
'click #button': function() {
this.model.set('lastRoll', getRandomInteger(1, 6));
}
}
Иногда, когда я вызываю getRandomInteger(), int будет таким же, как и предыдущий, из-за чего мой .set('lastRoll', int) не регистрируется как событие "изменения". Но это означает, что мой "трясущий" класс не будет применен, и это плохо.
Как заставить Backbone всегда распознавать установленный атрибут, даже если заданное значение было таким же? Есть ли какое-то "установленное" событие? (Не видел ни одного в документах.)
Редактировать: я знаю, что для этого, вероятно, существует хак {silent: true}/.trigger(), но есть ли какой-нибудь "чистый" или "семантический" способ всегда распознавать . вызов set()?