1

バックボーンで、モデルの属性を以前と同じ値に設定すると、「変更」イベントがトリガーされません。

私の見解:

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() 呼び出しを認識する「クリーン」または「セマンティック」な方法はありますか?

4

1 に答える 1