Не будет отображаться без collection.on, в замешательстве
Я работаю над проектом Backbone.js, и меня смущает вопрос о collection.on или так называемой привязке.
Вот немного кода из моего представления.
initialize: function(){
this.accCollection = this.options.accCollection;
//Nothing shows without this line, which renders 3 times
this.accCollection.on('all', this.render, this);
this.accCollection.fetch({
success:function(){
this.render;
}
});
},
render: function(){
$('.currentPage').html("<h3>Accounts</h3>");
console.log(this.accCollection.models);
//Render it in jade template
this.$el.html(this.template({accCollection:this.accCollection.models}));
return this;
}
Поэтому я не понимаю, почему без этой строки не получится. Это работает, если я использую "все" и "добавить". Это что-то с моей выборкой, которая заставляет его не рендерить пустые данные в первый раз, а со второго на третье он работает, потому что он был заполнен тогда? Смущенный!
this.accCollection.on('all', this.render, this);
Скажите, если мне нужно предоставить больше информации, и я отредактирую вопрос!
/С уважением
1 ответ
Решение
Пара вещей:
- По мнению, вы должны
this.listenTo
(пример ниже): это гарантирует, что события будут отменены, когда представление будет уничтожено. - Вы
success
обратный вызов не разделяет контекст представления.this
в вашем обратном вызове относится кoptions
объект, который вы передаете, а не вид или даже коллекция.
Что вы, вероятно, хотите сделать, это:
initialize: function(){
this.accCollection = this.options.accCollection;
this.listenTo(this.accCollection, 'reset', this.render, this);
// Setting reset to true will trigger the reset event
this.accCollection.fetch({ reset: true });
}