/ / Backbone.Marionette erro ao tentar usar o CollectionView - backbone.js, marionette, backbone-views, backbone-collections

Backbone.Marionette jogando erro tentando usar CollectionView - backbone.js, marionete, visões de backbone, coleções de backbone

Estou ficando preso em uma questão bastante irritante e decidi procurar ajuda, pois é difícil descobrir o erro.

Eu tenho uma exibição de layout de marionete em uma única páginaaplicativo que representa o painel que muda. Eu funciono bem até tentar adicionar um CollectionView como filho do layout. Estou fazendo algo errado, mas o erro que recebo não ajuda muito.

Estou recebendo este erro:

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

Não consigo descobrir qual função preciso definir neste caso.

Aqui está o layout da minha "página" (como fica no wrapper de solicitação)

    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"
},

});

Este é o meu CollectionView que estou tentando usar. Eu o reduzi ao mínimo para tentar fazer com que isso funcionasse sem sorte.

    return Marionette.CollectionView.extend({
collection: MyDataSet,
itemView: MyItemView,
});

Suponho que estou fazendo algo errado ao criar coisas no método init, mas não tenho certeza de qual é a maneira correta de fazer isso.

Qualquer ajuda seria muito apreciada.

Obrigado, G

Respostas:

0 para resposta № 1

Como mu is too short disse, é difícil dizer o que está acontecendo aqui. Enfim, tente olhar se você definir vars como Template antes disso, você define Marionette.Layout, o mesmo em Marionette.CollectionView


0 para resposta № 2

Duas coisas que eu vejo:

1) Não tenho muita certeza do seu caso de uso de retornar "Marionette.Layout.extend" Suponha que você criará um objeto usando "novo" posteriormente? Significando que você deve ter o equivalente a

var MyLayout = Marionette.Layout.extend {...}
var _myLayout = new MyLayout ();

2) A região deve ser renderizada dentro de "onRender":

onRender: function() {
// SHOW THE VIEW
this.content.show( new DrinkCollectionView( { collection:this.collection } ) );

}