0

版本:ExtJs 4.1

要更改子项,我使用此功能:

树存储(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
        }
     }); 

虽然是同一个 store ,但是加载并展开到正确的路径后,由于没有调用函数treeStore,所以图标没有变化。.on( 'expand')为什么?

问题

如何在这个新加载的商店扩展到节点路径之前更改它的图标?

我试过的

在打电话之前,.load()我尝试编辑孩子,oNode.eachChild(function(oChild) {}但没有成功。

4

1 回答 1

1

我想出了解决方案,这真的很容易。我不再改变 on expand,而是 on load

因此,它会像这样在扩展和加载时更改图标:

this.on( 'load', function( oStore, oNode, oNodes ) { 
  // do something with the nodes 
}
于 2012-10-19T10:57:23.840 回答