我陷入了一个非常恼人的问题,并决定寻求帮助,因为错误很难弄明白。
我在一个页面应用程序中有一个Marionette Layout视图,表示切换出来的面板。我有它工作正常,直到我尝试添加CollectionView作为布局的孩子。我做错了,但我得到的错误不是很有帮助。
我收到此错误:
Uncaught TypeError: undefined is not a function backbone.marionette.js:1240
Marionette.CollectionView.Marionette.View.extend._initChildViewStorage backbone.marionette.js:1240
Marionette.CollectionView.Marionette.View.extend.constructor backbone.marionette.js:1014
child backbone.js:1531
Marionette.Layout.extend.initialize
我无法弄清楚在这种情况下我需要定义什么功能。
这是我的页面'布局(因为它位于require包装器中)
return Marionette.Layout.extend({
template: Template,
className: "page",
initialize: function(options) {
this.collection = new DataSet();
this.collection.fetch();
// ADD THE VIEW
var dataview = new DrinkCollectionView( { collection:this.collection } );
// SHOW THE VIEW
this.content.show( dataview );
},
regions: {
content: "#page-content"
},
});
这是我正在尝试使用的CollectionView。我把它煮到了最低限度,试图让它运转起来没有运气。
return Marionette.CollectionView.extend({
collection: MyDataSet,
itemView: MyItemView,
});
我认为我在init方法中创建东西时出错了,但我不确定这样做的正确方法是什么。
非常感谢任何帮助。
谢谢, ģ
答案 0 :(得分:0)
mu is too short
如何说,很难说这里发生了什么。无论如何,在你定义Marionette.Layout之前,试着看看你是否定义了Template
之类的变种,同样在Marionette.CollectionView
上
答案 1 :(得分:0)
我看到两件事:
1)不确定您返回'Marionette.Layout.extend'的用例 假设您稍后将使用“new”创建一个对象? 这意味着你应该具有相同的
var MyLayout = Marionette.Layout.extend {...}
var _myLayout = new MyLayout ();
2)该区域应该在'onRender'内呈现:
onRender: function() {
// SHOW THE VIEW
this.content.show( new DrinkCollectionView( { collection:this.collection } ) );
}