2015-11-10 3 views
0

Я довольно новичок в Marionette.js и, кажется, испытываю некоторые проблемы с отображением коллекции.Коллекция Marionette.js не определена в виде коллекции

При попытке показать представление появляется следующее сообщение об ошибке консоли: Uncaught TypeError: Cannot read property 'toJSON' of undefined.

Кажется, что коллекция не является обязательной для детского вида. Экземпляр Collection View выглядит ОК, то есть я вижу свойство childView и свойство коллекции с выбранными моделями. Документы кажутся довольно простыми в том, как построить представление коллекции, поэтому не уверен, что мне не хватает. Благодарю.

Child view: 
var UserProfile = Marionette.ItemView.extend({ 
    template: '', 
    initialize: function() { 
    this.template = Marionette.TemplateCache.get("#userprofile"); 
    }, 
    render: function() { 
    console.log(this.collection); //undefined 
    var data = this.collection.toJSON(); //error message here 
    this.$el.html(this.template({data:data})); 
    } 
}); 

//Collection view: 
var UserView = Marionette.CollectionView.extend({ 
    childView: UserProfile 
}); 

// Fetch collection and show: 
var myQuery = new Parse.Query(app.Models.User); 
myQuery.limit(200).containedIn(option, uiArray); 

var Contacts = Parse.Collection.extend({ 
    model: app.models.User, 
    query: myQuery 
}); 

var contacts = new Contacts(); 
contacts.fetch().then(function(contacts) { 
    var userview = new UserView({collection:contacts}); 
    app.regions.get("content").show(userview); 
}) 

ответ

2

Вы спрашиваете «коллекцию» в ItemView. Элемент ItemView работает с элементом. Поэтому имеет смысл написать примерно так:

render: function() { 
    console.log(this.model); //undefined 
    var data = this.model.toJSON(); //error message here 
    this.$el.html(this.template({data:data})); 
    } 
}); 
+0

Это похоже на работу. Думаю, это позволит мне использовать ItemView, когда я просто хочу отобразить одну модель в другом месте приложения? – user2232681

Смежные вопросы