版本:ExtJs 4.1
要更改子项目,我使用此功能:
TreeStore (Ext.data.TreeStore)
storeId : 'treeStore',
...
constructor: function( oConfig ) {
...
this.on( 'expand', function( oObj ) {
oObj.eachChild(function(oNode) {
switch(oNode.data.type) {
case "report":
oNode.set('icon', strIconReport);
break;
case "view":
oNode.set('icon', strIconView);
break;
}
});
});
刷新
在树中删除或添加项目后,我使用以下地址重新加载树:
var oStore = Ext.getStore('treeStore');
oStore.load({
node : oNode,
params : {
newpath : oNode.data.path,
overwrite : true
}
});
虽然它是同一个商店treeStore
,但在加载并扩展到正确的路径后,由于未调用.on( 'expand')
函数,因此图标不会更改。为什么呢?
问题
如何在扩展到节点路径之前更改此新加载的商店的图标?
我尝试了什么
在致电.load()
之前,我尝试使用oNode.eachChild(function(oChild) {}
编辑孩子,但没有成功。
答案 0 :(得分:1)
我想出了解决方案,这真的很容易。我不再更改expand
,而是更改load
。
因此它会在扩展和加载时更改图标:
this.on( 'load', function( oStore, oNode, oNodes ) {
// do something with the nodes
}