Extjs TreePanel: Как мне скрыть узлы по классу или атрибуту? - PullRequest
2 голосов
/ 07 октября 2009

У меня есть дерево с узлами, которые содержат задачи.

Завершенные задачи имеют статус атрибута: 100 и класс cls: "done".

Я бы хотел сделать кнопку для скрытия выполненных задач.

Какая функция будет скрывать узлы в дереве по их идентификатору или классу?

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

Ответы [ 2 ]

7 голосов
/ 07 октября 2009

Попробуйте пройтись по дереву, начиная с корня, и протестируйте атрибуты, которые вы хотите. Если вы получили удар, скройте узел:

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 голос
/ 28 марта 2016

Например, для 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
                }
            ]
        }
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...