extjs检索树存储中的子节点

extjs检索树存储中的子节点,extjs,tree,nodes,Extjs,Tree,Nodes,我正在加载一个treestore,获取根节点,然后尝试迭代子节点。从我观察到的情况来看,在我看来,树被加载到了存储中,我能够获得根,当我在控制台中展开根时,我能够看到子级,但是当我尝试从ExtJS访问子级时,我会出错 任何帮助都将不胜感激。事先非常感谢 var ts = this.getStore('QaireTreeStore'); console.log("--- ts:"); console.log(ts); var p = ts.getProxy();

我正在加载一个treestore,获取根节点,然后尝试迭代子节点。从我观察到的情况来看,在我看来,树被加载到了存储中,我能够获得根,当我在控制台中展开根时,我能够看到子级,但是当我尝试从ExtJS访问子级时,我会出错

任何帮助都将不胜感激。事先非常感谢

var ts = this.getStore('QaireTreeStore'); console.log("--- ts:"); console.log(ts); var p = ts.getProxy(); console.log("--- p:"); console.log(p); p.extraParams = {}; p.setExtraParam('prgmCode','arg1'); p.setExtraParam('qaireCode','arg2'); ts.removeAll(); ts.load(); var rn = ts.getRootNode(); console.log("--- rn:"); console.log(rn); console.log("--- isRoot"); console.log(rn.isRoot()); rn.eachChild(function(n) { console.log('-- n:'); console.log(n); }); console.log("--- firstChild:"); console.log(rn.firstChild); console.log("--- childNodes:"); console.log(rn.childNodes); console.log("--- getChildAt 0:"); console.log(rn.getChildAt(0)); var ts=this.getStore('qairetrestore'); console.log(“--ts:”); 控制台日志(ts); var p=ts.getProxy(); 控制台日志(“--p:”); 控制台日志(p); p、 外参数={}; p、 setExtraParam('prgmCode','arg1'); p、 setExtraParam('QairCode','arg2'); t.removeAll(); t.负载(); var rn=ts.getRootNode(); 控制台日志(“--rn:”); 控制台日志(rn); console.log(“--isRoot”); console.log(rn.isRoot()); rn.eachChild(函数(n){ console.log('--n:'); 控制台日志(n); }); console.log(“--firstChild:”); console.log(rn.firstChild); log(“--childNodes:”); console.log(rn.childNodes); console.log(“--getChildAt 0:”); console.log(rn.getChildAt(0)); 在“--rn:”下,我展开了“childNodes”和“constructor”以显示数据的存在。输出显示为: --- ts: SrvyController.js:71 constructor {autoLoad: false, model: function, storeId: "QaireTreeStore", proxy: constructor, fields: Array[1]…} SrvyController.js:72 --- p: SrvyController.js:76 constructor {type: "ajax", api: Object, reader: constructor, model: function, hasListeners: HasListeners…} SrvyController.js:77 --- rn: SrvyController.js:89 constructor {phantom: false, internalId: "ext-record-1", raw: Object, data: Object, modified: Object…} childNodes: Array[1] 0: constructor childNodes: Array[9] data: Object dirty: false editing: false events: Object firstChild: constructor hasListeners: HasListeners id: "IHA.model.QaireModel-48" internalId: 48 lastChild: constructor modified: Object nextSibling: null parentNode: constructor phantom: false previousSibling: null raw: Object stores: Array[0] proto: TemplateClass length: 1 proto: Array[0] data: Object dirty: false editing: false events: Object firstChild: constructor hasListeners: HasListeners id: "IHA.model.QaireModel-ext-record-1" internalId: "ext-record-1" lastChild: constructor modified: Object nextSibling: null parentNode: null phantom: false previousSibling: null raw: Object stores: Array[0] proto: TemplateClass SrvyController.js:90 --- isRoot SrvyController.js:93 true SrvyController.js:94 --- firstChild: SrvyController.js:101 null SrvyController.js:102 --- childNodes: SrvyController.js:105 [] SrvyController.js:106 --- getChildAt 0: SrvyController.js:108 undefined

---ts:SrvyController.js:71 构造函数{autoLoad:false,model:function,storeId:“qairetrestore”,代理:构造函数,字段:数组[1]…} SrvyController.js:72 ---p:SrvyController.js:76 构造函数{type:“ajax”,api:Object,reader:constructor,model:function,hasListeners:hasListeners…} SrvyController.js:77 ---rn:SrvyController.js:89 构造函数{phantom:false,internalId:“ext-record-1”,原始:对象,数据:对象,修改:对象…} 子节点:数组[1] 0:构造函数 子节点:数组[9] 数据:对象 脏的:假的 编辑:假 事件:对象 第一个孩子:构造函数 hasListeners:hasListeners id:“IHA.model.QairModel-48” 内部ID:48 lastChild:构造函数 修改:对象 nextSibling:null 父节点:构造函数 幻影:错 以前的同级:null 原始:对象 存储:数组[0] 原型:模板类 长度:1 proto:数组[0] 数据:对象 脏的:假的 编辑:假 事件:对象 第一个孩子:构造函数 hasListeners:hasListeners id:“IHA.model.QaireModel-ext-record-1” 内部ID:“ext-record-1” lastChild:构造函数 修改:对象 nextSibling:null 父节点:空 幻影:错 以前的同级:null 原始:对象 存储:数组[0] 原型:模板类 SrvyController.js:90 ---isRoot SrvyController.js:93 truesrvycontroller.js:94 ---第一个孩子:SrvyController.js:101 空SrvyController.js:102 ---childNodes:SrvyController.js:105 []SrvyController.js:106 ---getChildAt 0:SrvyController.js:108 未定义


不确定这是否能解决您的问题,但由于您使用的是AJAX代理,因此您应该在应用商店的侦听器中进行处理

ts.on('load', function(store, records) {
   var rn = ts.getRootNode();
   //do your processing here
});

非常感谢,这正是我需要的。当我使用ExtJS MVC时,我确实在控制器中使用了这个变体:this.getsrvytreestore().addListener('load',this.processTree,this);