Marionette.js 集合在集合视图中未定义
Marionette.js collection is undefined in collection view
我对 Marionette.js 还很陌生,似乎在渲染集合视图时遇到了一些问题。
我在尝试显示视图时收到以下控制台错误消息:Uncaught TypeError: Cannot read property 'toJSON' of undefined
。
集合似乎没有绑定到子视图。集合视图的实例看起来不错,这意味着我看到 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);
})
您正在 ItemView 中询问 "collection"。 ItemView 对项目进行操作。所以写这样的东西是有意义的:
render: function() {
console.log(this.model); //undefined
var data = this.model.toJSON(); //error message here
this.$el.html(this.template({data:data}));
}
});
我对 Marionette.js 还很陌生,似乎在渲染集合视图时遇到了一些问题。
我在尝试显示视图时收到以下控制台错误消息:Uncaught TypeError: Cannot read property 'toJSON' of undefined
。
集合似乎没有绑定到子视图。集合视图的实例看起来不错,这意味着我看到 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);
})
您正在 ItemView 中询问 "collection"。 ItemView 对项目进行操作。所以写这样的东西是有意义的:
render: function() {
console.log(this.model); //undefined
var data = this.model.toJSON(); //error message here
this.$el.html(this.template({data:data}));
}
});