我有一个TreePanel及其TreeStore和Model。
我使用node.appendChild( newNode );
不使用商店为树添加了节点。
现在我需要解析所有节点。我试过这个:
dataPanelsStore.each(function(record,id){
console.log(record);
});
但注意到这只会解析扩展节点(可见节点)。
我该如何解析一切?
答案 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方法。