Выбор извлечения основной цепи не срабатывает reset()
Это мой взгляд на коллекцию
var mssg = mssg || {};
mssg.MessagesView = Backbone.View.extend({
el: '#messages',
initialize: function() {
this.collection.fetch();
this.collection.bind('reset', this.render, this);
},
render : function() {
this.$el.html('');
this.collection.each(function( item ) {
this.renderMessage( item );
}, this );
return this;
},
renderMessage : function( item ) {
var messageView = new mssg.MessageView({
model : item
});
this.$el.append( messageView.render().el );
}
});
это коллекция
var mssg = mssg || {};
mssg.Messages = Backbone.Collection.extend({
model : mssg.Message,
url : 'messages'
});
и так оно инициализируется:
var mssg = mssg || {};
$(function() {
new mssg.MessagesView({
collection : new mssg.Messages()
});
});
Проблема заключается в том, что функция render
, привязанная к reset
, не запускается после запроса выборки ajax.
Если я привяжу его к add
, он будет работать.
Я попробовал привязать all
к функции debuggin, и он говорит, что событие sync
вызывается рядом с add
для каждого элемента.
Ответы
Ответ 1
Если вы проверите backbone журнал изменений, вы увидите, что обработка fetch обрабатывается в 1.0:
Переименованная коллекция "обновление" для установки для parallelism с аналогичным model.set() и контраст с reset. Теперь это обновление по умолчанию механизм после извлечения. Если вы хотите продолжить использование "reset", пройдите {reset: true}
Итак, чтобы вызвать событие reset, теперь вам нужно использовать
this.collection.fetch({reset: true})
Ответ 2
в backbone 1.0, вам нужно запустить reset вручную:
youColloection.fetch({reset: true});