我在Backbone/Marionette中工作,并有一个Collection,我在其中解析数据,并创建一个模型集合,然后将其传递给一个CollectionView,并为该CollectionView设置一个childView。
集合成功进入CollectionView,但当我的应用程序尝试显示childView时,似乎得到了Uncaught TypeError: Cannot read property 'length' of undefined
在Marionette中抛出的错误如下:
_filteredSortedModels: function(addedAt) {
var viewComparator = this.getViewComparator();
var models = this.collection.models;
addedAt = Math.min(Math.max(addedAt, 0), models.length - 1);
这里似乎没有定义“模型”。
我的应用程序是这样设置的:
抽屉收藏:
App.module('Home.Drawer.Collections', function (Collections, App, Backbone, Marionette) {
model: App.Home.Drawer.Models.DrawerModel,
...make a request, parse some data...
responseData.push( new App.Home.Drawer.Models.DrawerModel({
...model properties...
});
var DrawerLayoutCollection = new App.Home.DrawerCollectionView({collection: responseData});
App.mainContainer.show(shelfLayoutCollection);
抽屉视图:
App.module('Home', function(Home, App, Backbone, Marionette) {
Home.DrawerComponent = Backbone.Marionette.LayoutView.extend({
...my template, events, ui, etc....
});
});
集合视图(DrawerView设置为它的childView):
Home.DrawerCollectionView = Backbone.Marionette.CollectionView.extend({
childView: Home.DrawerComponent
});
任何意见都将不胜感激!!!
1条答案
按热度按时间2vuwiymt1#
这一行似乎有几处不对:
首先,
DrawerLayoutCollection
不是一个构造函数,而是一个示例;其次,它被称为一个 * 集合 *,但实际上它是一个视图示例。您正在将
responseData
作为集合而不是实际的 Backbone.js 集合传递给集合视图。应该是这样的