首页 文章

如何在存储加载后获取子节点

提问于
浏览
0

版本: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;
           }
        });
     });

Reload

删除或添加树中的项目后,我将树重新加载到其他地方:

var oStore = Ext.getStore('treeStore');
oStore.load({
        node     : oNode,
        params   : { 
           newpath     : oNode.data.path, 
           overwrite   : true
        }
     });

虽然它是相同的存储 treeStore ,但在加载并扩展到正确的路径后,由于未调用 .on( 'expand') 函数,因此图标不会更改 . 为什么?

Question

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

What I tried

在调用 .load() 之前,我尝试使用 oNode.eachChild(function(oChild) {} 编辑子项但没有成功 .

1 回答

  • 1

    我提出了解决方案,这很容易 . 我不再更改 expand ,而是更改 load .

    所以它改变了扩展和加载上的图标,如下所示:

    this.on( 'load', function( oStore, oNode, oNodes ) { 
      // do something with the nodes 
    }
    

相关问题