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