我需要隐藏某些物品的所有孩子。该结构是一个嵌套树,并使用CompositeView来做到这一点。我该怎么办才能让那棵树崩溃呢?
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 :(得分: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的新手。