Почему не могу указать вьюшке коллекцию?

var Chat = Backbone.Model.extend({
messageList: new MessageList(),
messageListView: new MessageListView({collection: this.messageList}),
 
switchChannel: function(channel) {
this.messageList.fetch({url: 'channels/'+channel, reset: true})
}
 
});
 
 
// in other file
var MessageList = Backbone.Collection.extend({
model: Message,
})
 
var MessageListView = Backbone.View.extend({
initialize: function(){
console.log(this.collection)
this.listenTo(this.collection, 'reset', this.render);
},


console.log(this.collection) -> undefined
  • Вопрос задан
  • 2306 просмотров
Решения вопроса 1
MCBumf
@MCBumf
В этом месте:

var Chat = Backbone.Model.extend({
  messageList: new MessageList(),
  messageListView: new MessageListView({collection: this.messageList}),
...


this ссылается на window, а не на экземпляр Chat. Объекты messageList и messageListView нужно создавать при инициализации модели:

var Chat = Backbone.Model.extend({
  initialize: function(){
    this.messageList = new MessageList();
    this.messageListView = new MessageListView({collection: this.messageList});
}
...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы