バックボーンで、モデルの属性を以前と同じ値に設定すると、「変更」イベントがトリガーされません。
私の見解:
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() 呼び出しを認識する「クリーン」または「セマンティック」な方法はありますか?