{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.