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;
           }
        });
     });

リロード

ツリー内のアイテムを削除または追加した後、次の場所でツリーをリロードします。

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

同じストアですが、ロードして正しいパスに展開した後、関数が呼び出されないtreeStoreため、アイコンは変更されません。.on( 'expand')なんで?

質問

ノードパスに展開する前に、この新しくロードされたストアのアイコンを変更するにはどうすればよいですか?

私が試したこと

電話.load()をかける前に、子供たちを編集しようとしましoNode.eachChild(function(oChild) {}たが、成功しませんでした。

4

1 に答える 1

1

私は解決策を思いつきました、それは本当に簡単です。expandではなく、もう変更しませんload

そのため、展開と読み込みの両方でアイコンが次のように変更されます。

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