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

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

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

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

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

Я читал что-то вроде этого на Backbonejs.org

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

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

1 ответ

Решение

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

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

Начиная с Backbone 1.0, это поведение изменилось. Когда вы используете флаг молчания, вы не задерживаете 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.

Другие вопросы по тегам