我必须使用牵线木偶,集合视图和项目视图。没有解决这个要求,所以必须做一些可怕的黑客才能使事情有效。
无论如何,我们有注释的牵线木偶文件
addItemView: function(item, ItemView, index){
....
if (view.onShow){
this.onShowCallbacks.add(view.onShow, view);
}
和
onShowCalled: function(){
this.onShowCallbacks.run();
},
在集合视图中
我有我的观点
var dynamicView = baseView.extend({
template: function() {
... this template renders fine no problems
},
onShow: function(){
console.log("I am shown");
}...
在我的收藏夹视图中,我有一个onshow
onShow: function(){
console.log("showing collection");
}
我有一条被称为
的路线 var myView = new contentCollectionView({
collection: collection,
tagName: "div",
className: "dashboard"
});
myView.close();
myapp.content.show(myView);
一切都呈现出来。
我将显示集合输出提供给控制台,但是我没有得到我显示的输出,即使它所呈现的模板已经呈现并且最终在我的DOM中显示了所有内容。
答案 0 :(得分:0)
onShow 和 onRender 在不同的上下文中触发。
根据我的经验,当视图添加到区域时,大多数情况下会调用 onShow 。查看Marionette Region Wiki。
当 CollectionView 呈现 ItemView 时,它实际上会在 ItemView 上调用render
触发 onRender 而非 onShow 。查看these lines in the Marionette CollectionView Source。
如果您一直遵循此处的逻辑,那么您的解决方案是在 ItemView 中定义onRender
而不是onShow
。
希望有所帮助!