2

我陷入了一个非常烦人的问题,并决定寻求帮助,因为错误很难弄清楚。

我在一个单页应用程序中有一个 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 方法中创建东西时做错了,但我不确定这样做的正确方法是什么。

任何帮助将不胜感激。

谢谢,G

4

2 回答 2

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 } ) );

}
于 2013-08-17T15:57:00.587 回答
0

怎么mu is too short说,很难说这里发生了什么。无论如何,试着看看你是否像Template以前一样定义了变量,然后你定义了 Marionette.Layout,同样的Marionette.CollectionView

于 2013-08-17T15:45:45.043 回答