Javascript 通过CollectionView(木偶/主干)传递布局(和操作区域)

Javascript 通过CollectionView(木偶/主干)传递布局(和操作区域),javascript,backbone.js,marionette,backbone-views,Javascript,Backbone.js,Marionette,Backbone Views,我试图将布局传递到CollectionView,然后操纵其中的区域 现在,我正在成功地将布局发送到CollectionView(它位于自己的区域中),如下所示: 然后我可以看到布局正在被渲染。然而,我想不出一种方法来修改(甚至触摸)ALayout中的区域。有办法做到这一点吗?最后,我试图得到一个“窗格”集合,每个窗格内部都有相同的区域布局,并以某种方式绘制这些区域 此外,我最初只是将一个ItemView传递到CollectionView中,但我可以找到一种将区域添加到该ItemView中的方法。

我试图将布局传递到CollectionView,然后操纵其中的区域

现在,我正在成功地将布局发送到CollectionView(它位于自己的区域中),如下所示:

然后我可以看到布局正在被渲染。然而,我想不出一种方法来修改(甚至触摸)ALayout中的区域。有办法做到这一点吗?最后,我试图得到一个“窗格”集合,每个窗格内部都有相同的区域布局,并以某种方式绘制这些区域

此外,我最初只是将一个ItemView传递到CollectionView中,但我可以找到一种将区域添加到该ItemView中的方法。如果可能的话,我希望在传递给它的文件中控制这些区域(无论是布局还是项目视图)

有没有人有这方面的经验


编辑: 好的,我发现了一个关于使用木偶附带的Backbone.BabySitter的提示——从这个关于CollectionView的孩子的文档中。现在我的代码是这样的

var collectionViewToUse = new CollectionView({
    itemView: ALayout,
    collection : someCollection
});

main_layout.main_region.show(collectionViewToUse);

collectionViewToUse.children.each(function(view) {
  console.log(view);
  //This fails.
  view.regionManagers.someRegion.show('HHHHHH');
  //So does this, if I run it instead
  view.someRegion.show('Anything');
});

主干视图实例正在被记录,所以我想我已经了解了一些事情。谁能告诉我如何从这一步操作这些区域吗?

好的,我想我已经找到了这个问题的答案。希望这有助于其他人在未来

答案是找保姆。您基本上实例化了一个CollectionView,然后使用“保姆”在其中循环,并对每个视图执行一些操作。因此,如果将布局传递给它:

var collectionViewToUse = new CollectionView({
    itemView: ALayout,
    collection : someCollection
});

main_layout.main_region.show(collectionViewToUse);

collectionViewToUse.children.each(function(view) {
   view.someRegion.show(new SomeView({model : view.model });
});
因此,基本上,您可以将集合视图传递给布局,而不是ItemView,然后在“视图”中循环,并将新视图传递给区域


请评论任何改进,或者如果这对其他人有任何帮助

我发现这个模式有一点修改,将逻辑封装在集合本身内部,而不是从外部修改

var collectionViewToUse = new CollectionView({
    itemView: ALayout,
    collection : someCollection,

    onBeforeItemAdded: function(view) {
        view.on('show', function() {

            view.someRegion.show(
                new SomeView({
                    model : view.model // view.model is model of Layout
                })
            );

        });
    }
});

main_layout.main_region.show(collectionViewToUse);

发布的所有答案都表明
模型
被附加到
布局
,而模型只在那里传递到其中一个子视图。

此错误告诉我必须指定一个布局不奇怪的ItemView。我有这个在我的项目生产工作。你能发一篇有错误的摘要吗?您使用的是哪个版本的木偶/主干网?如果你感兴趣,发布一些你的代码,我也会和我的代码进行比较!是的,那是我的代码的问题。我在复合视图和onCompositeCollectionRendered中执行此操作。当我调用children.each view.someRegion时未定义。可能使用了不同版本的主干网/木偶网?起初我也这么认为,但我认为@dstarh验证了是他的代码中的其他内容导致了问题。这是正确的吗?
var collectionViewToUse = new CollectionView({
    itemView: ALayout,
    collection : someCollection,

    onBeforeItemAdded: function(view) {
        view.on('show', function() {

            view.someRegion.show(
                new SomeView({
                    model : view.model // view.model is model of Layout
                })
            );

        });
    }
});

main_layout.main_region.show(collectionViewToUse);