Marionette - 如何在显示Collection时在视图中运行我的onshow

时间:2014-05-22 10:54:28

标签: marionette

我必须使用牵线木偶,集合视图和项目视图。没有解决这个要求,所以必须做一些可怕的黑客才能使事情有效。

无论如何,我们有注释的牵线木偶文件

  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中显示了所有内容。

1 个答案:

答案 0 :(得分:0)

onShow onRender 在不同的上下文中触发。

根据我的经验,当视图添加到区域时,大多数情况下会调用 onShow 。查看Marionette Region Wiki

CollectionView 呈现 ItemView 时,它实际上会在 ItemView 上调用render触发 onRender 而非 onShow 。查看these lines in the Marionette CollectionView Source

如果您一直遵循此处的逻辑,那么您的解决方案是在 ItemView 中定义onRender而不是onShow

希望有所帮助!