В моем приложении 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 какой-либо способ прослушивания() изменений в нескольких (конкретных) атрибутах модели и рендеринга представления только один раз, если указанные несколько атрибутов установлены одновременно?