在 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() hack 来完成此操作,但是是否有任何“干净”或“语义”的方式来始终识别 .set() 调用?