2014-07-12 3 views
-1

일부 항목의 모든 하위 항목을 숨겨야합니다. 구조체는 중첩 된 트리이고 CompositeView를 사용하고 있습니다. 그 나무가 무너지기 위해서 나는 무엇을해야합니까?다른 CompositeView 항목의 모든 하위 ComposteView를 숨기는 방법은 무엇입니까?

var ItemView = Backbone.Marionette.CompositeView.extend({ 
    tagName : "li", 
    //..., 
    onRender: function() { 
    this.collection = this.model.children; // bindCollection 
    }, 
    serializeData: function() { 
    //... 
    }, 
    events: { 
    "click .tree-view-chevron": 'toggleView' 
    }, 
    toggleView: function() { 
    this.$el.toggleClass("open"); 
    if (!this.$el.hasClass("open")) { 
     //collapse then re-render parent collectionView 
    } 
    else 
     this.render(); 
    this.switchChevron(); 
    return false; 
    }, 
    switchChevron: function() { 
    //... 
    } 
}); 

var TreeRoot = Backbone.Marionette.CollectionView.extend({ 
    itemView : ItemView 
    ,tagName: "ul" 
    ,className: "tree-view-root" 
}); 

답변

0

난 그냥 내 '바보'문제에 대한 해결책 작성했습니다 :

hideChildren: function() { 
    this.children.each(
     function(itemV) { 
      itemV.$el.detach(); 
     } 
); 
}, 
toggleView: function() { 

    if (this.$el.hasClass("open")) 
    { 
     this.hideChildren(); 
     this.$el.removeClass("open"); 
     if (this.model.hasChildren()) 
      this.ui.chevron.html(this.chevronRight); 
    } 
    else 
    { 
     this.render(); 
     this.$el.addClass("open"); 
     if (this.model.hasChildren()) 
      this.ui.chevron.html(this.chevronDown); 
    } 

    return false; 
} 

hideChildren을! 기능 및 붕괴가 작동합니다. 어쩌면 거기에 좋은 방법이 있습니다 ... 나는 아직 js에 새로 왔습니다.