在我的 Backbone.js 应用程序中,我有以下模型和视图:
var Operation = Backbone.Model.extend({
defaults: function() {
return {
sign: '-',
value: '0000',
index: 0
}
}
});
var operation = new Operation();
var OperationView = Backbone.View.extend({
el: '#operation',
initialize: function() {
this.listenTo(this.model, 'change:sign change:value', this.renderOperation);
this.renderOperation();
},
renderOperation: function() {
console.log('rendered once');
this.$el.html(this.model.get('sign') + this.model.get('value'));
}
});
var operationView = new OperationView({ model: operation });
视图关注的地方
'change:sign change:value'
(...每当“符号”或“值”发生变化时更新视图。)
当我使用
// Test
setInterval(function() {
var newValue = parseInt(operation.get('value'), 10);
newValue += 500;
newValue += '';
operation.set({ 'sign': '+', 'value': newValue });
}, 1000);
...第一次执行 setInterval 时,视图更新两次(“渲染一次”是 console.logged 2 次)。
但是,由于我“同时”设置符号和值,我宁愿我的视图只更新一次。
问题:在 Backbone.js 中,是否有任何方法可以使模型的多个(特定)属性的 listenTo() 更改,并且如果同时设置了多个属性,则只渲染一次视图?