javascript - 有没有办法只显示 extjs 树中的父节点

标签 javascript html tree treeview extjs4

我想在 extjs 中仅显示树的父节点。在我的数据存储中也有叶节点。

输出应该是这样的 -

Folder 1
   Folder 1.1
Folder 2
Folder 3

最佳答案

创建一个仅获取父节点的过滤器对象并将其添加到存储配置中:

例如仅过滤父节点:

var nodeFilter = new Ext.util.Filter({
    property: 'leaf',
    value   : false
});

将其放在树存储配置中:

var yourTreeStore = Ext.create('Ext.data.TreeStore', {
    // other configs ...
    filters: [nodeFilter]
});

编辑:

incutonez是对的,我按照API属性提交了,但没有注意到缺少的功能。不过,它们很容易被覆盖,以对树存储应用过滤。这在 4.1b2 中对我有用:

Ext.override(Ext.data.TreeStore, {

    hasFilter: false,

    filter: function(filters, value) {

        if (Ext.isString(filters)) {
            filters = {
                property: filters,
                value: value
            };
        }

        var me = this,
            decoded = me.decodeFilters(filters),
            i = 0,
            length = decoded.length;

        for (; i < length; i++) {
            me.filters.replace(decoded[i]);
        }

        Ext.Array.each(me.filters.items, function(filter) {
            Ext.Object.each(me.tree.nodeHash, function(key, node) {
                if (filter.filterFn) {
                    if (!filter.filterFn(node)) node.remove();
                } else {
                    if (node.data[filter.property] != filter.value) node.remove();
                }
            });
        });
        me.hasFilter = true;

    },

    clearFilter: function() {
        var me = this;
        me.filters.clear();
        me.hasFilter = false;
        me.load();
    },

    isFiltered: function() {
        return this.hasFilter;
    }

});

通过代码中的此覆盖,您可以根据Ext.util.Filter创建一个“仅叶”过滤器作为函数或属性/值对。 API:

// leaf only filter as a property/value pair
var nodeFilter = new Ext.util.Filter({
    property: 'leaf',
    value   : false
});

// leaf only filter as a function
var nodeFilter = Ext.create('Ext.util.Filter', {
  filterFn: function(item) {
    return !item.data.leaf;
  }
});

然后,您可以随时调用过滤器函数来取出叶节点:

myTreeStore.filter(nodeFilter);

关于javascript - 有没有办法只显示 extjs 树中的父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9616352/

相关文章:

javascript 代码在 JSF xhtml 页面中不起作用

c# - 处理日期差异

javascript - Jquery 和 Angularjs

Javascript SessionStorage 项目在第一个函数调用中不可用

javascript - 我的脚本在 jsFiddle 中工作但在我的浏览器中不工作?

javascript - Jsfiddle 项目显示在预览中但不显示在结果页面中

javascript - 使用 jquery 将 Html 转换为搜索文本

java - DFS 堆栈溢出错误

算法 - 将嵌套数据转换为普通数据

python-3.x - 在一行中打印二叉树的最佳方法?