解析TreeStore数据甚至折叠节点

时间:2017-05-12 12:41:06

标签: extjs

我有一个TreePanel及其TreeStore和Model。 我使用node.appendChild( newNode );不使用商店为树添加了节点。

现在我需要解析所有节点。我试过这个:

dataPanelsStore.each(function(record,id){
    console.log(record);
});

但注意到这只会解析扩展节点(可见节点)。

我该如何解析一切?

2 个答案:

答案 0 :(得分:1)

从5.1.2开始,您可以将includedOptions对象传递给treestore#each方法:

我尝试在小提琴中使用5.1.1.451-Gray,它仍然只显示扩展节点。虽然在复制TreeStore.js代码之后它工作得很好。

所以这就是你能做的:

Ext.getStore('treestore').each(function(record,id){
    if(record.id !== 'root')
    console.log(record.data.name);
},this,{collapsed:true});

您还可以在第三个参数对象中传递filtered:true以包含已过滤的节点。

这是一个完整的示例,您可以复制到小提琴并运行:


    Ext.application({
    name : 'Fiddle',
    launch : function() {
       Ext.define('myApp.Territory', {
    extend: 'Ext.data.TreeModel',
    fields: [{
        name: 'text',
        mapping: 'name'
    }]
});
Ext.define('myApp.Country', {
    extend: 'Ext.data.TreeModel',
    fields: [{
        name: 'text',
        mapping: 'name'
    }]
});
Ext.define('myApp.City', {
    extend: 'Ext.data.TreeModel',
    fields: [{
        name: 'text',
        mapping: 'name'
    }]
});
var tp = Ext.create('Ext.tree.Panel', {
    renderTo: document.body,
    height: 200,
    width: 400,
    title: 'Sales Areas - using typeProperty',
    rootVisible: false,
    store: {
        // Child types use namespace of store's model by default
        storeId:'treestore',
        model: 'myApp.Territory',
        proxy: {
            type: 'memory',
            reader: {
                typeProperty: 'mtype'
            }
        },
        root: {
            children: [{
                name: 'Europe, ME, Africa',
                mtype: 'Territory',
                children: [{
                    name: 'UK of GB & NI',
                    mtype: 'Country',
                    children: [{
                        name: 'London',
                        mtype: 'City',
                        leaf: true
                    }]
                }]
            }, {
                name: 'North America',
                mtype: 'Territory',
                children: [{
                    name: 'USA',
                    mtype: 'Country',
                    children: [{
                        name: 'Redwood City',
                        mtype: 'City',
                        leaf: true
                    }]
                }]
            }]
        }
    }
});
Ext.getStore('treestore').each(function(record,id){
    if(record.id !== 'root')
    console.log(record.data.name);
},this,{collapsed:true});
    }
});

答案 1 :(得分:0)

解析节点意味着,无论是否扩展,都能得到每个节点数据?

如果是这样,请查看此方法cascade方法。