Подтвердить что ты не робот

{silent: true} в версии Backbone 1.0

Я обновлял мою базовую версию с 0.9.2 до 1.0, но я столкнулся с проблемой.

Модель не обновляется должным образом. В нем есть задержки. ранее мой код ниже отлично работает:

this.model({ attrib: true},{silent:true});

Но после обновления я удалил {silent:true}, и все работает отлично. Модель правильно обновляется.

Я читал что-то подобное на Backbonejs.org

Передача {silent: true} при изменении больше не будет задерживать отдельные события "change: attr", вместо этого они полностью отключены.

Я не понимаю, что означает утверждение.

4b9b3361

Ответ 1

О значении документа, который вы указали:

Когда вы делали (я думаю, что this.model была ошибкой) this.set({attr: value}, {silent: true}), все события изменения были только delayed до следующего не-молчащего изменения. То есть, если вы делали this.trigger('change') (начиная с последних версий jQuery/Backbone, this.change() больше не работает) или this.set('anotherAttr', anotherValue), событие change:attr было бы запущено.

По сравнению с Backbone 1.0 это поведение изменилось. Когда вы используете флаг silent, вы не откладываете событие change:attr больше, вы полностью закрываете.

Итак, в основном, чтобы проиллюстрировать фрагмент кода:

myModel.listenTo(myModel, 'change:attr', function() {alert();});
myModel.set('attr', true, {silent: true});
myModel.trigger('change');
// or myModel.set('anotherAttr', true);

сделает предупреждение в Backbone до 1.0, но не в Backbone 1.0.