Extjs TreePanel:如何按类或属性隐藏节点?

时间:2009-10-07 03:46:56

标签: javascript extjs

我有一个包含任务的节点的树。

已完成的任务具有属性状态:100和类cls:“已完成”。

我想制作一个隐藏已完成任务的按钮。

什么功能会根据ID或类隐藏树中的节点?

{"id":"45",
"description":"Pay bills",
"status":"100",
"cls":"done",
"uiProvider":"col",
"leaf":true}

2 个答案:

答案 0 :(得分:7)

尝试从根开始走树并测试所需的属性。如果您遇到命中,请隐藏节点:

tree.getRootNode().cascade(function() { // descends into child nodes
    if(this.attributes['status'] == 100) { // test this node
        this.getUI().hide() // hide this node
    }
})

您实际上已经问过班级"done"的测试。在这种情况下,只需测试this.attributes['cls'] == 'done'。我更喜欢检查"status"而不是"cls",因为后者可能是空格分离且混乱的。

答案 1 :(得分:1)

对于ExtJS 6,例如,当read config为false时,隐藏节点:

hideItemsReadFalse: function () {
    var me = this,
        items = me.getReferences().treelistRef.itemMap;


    for(var i in items){
        if(items[i].config.node.data.read == false){
            items[i].destroy();
        }
    }
}

Root:

{
    "text": "root",
    "children": [
        {
            "text": "Atualização",
            "iconCls": "x-fa fa-list",
            "children": [
                {
                    "leaf":true,
                    "text": "Empresas",
                    "module": "empresas",
                    "iconCls": "x-fa fa-building",
                    "read": false
                },
                {
                    "leaf":true,
                    "text": "Produtos",
                    "module": "produtos",
                    "iconCls": "x-fa fa-cubes",
                    "read": true
                }
            ]
        }
    ]
}