2014-07-20 17 views
0

此代碼在4.x中正常工作。目標是通過單擊打開/關閉樹項目。 在5.x點擊後發生錯誤:「self.getTreeStore不是函數」 我無法找到API文檔中的相關更改。 你能否給我一個提示,爲什麼4.x和5.x的工作不同?Ext.tree.Panel,itemclick,getTreeStore()在5.x中找不到,但在4.x中工作

Ext.onReady(function(){ 
    Ext.create('Ext.tree.Panel', { 
     border: false, 
     height: 200, 
     listeners: { itemclick: function(self, record, item, index, event) { 
         if (record.data.href=='') { 
         var Enode=self.getTreeStore().getNodeById(record.internalId); 
         if (Enode.isExpanded()) 
          Enode.collapse(); 
         else 
          Enode.expand(); 
         } } }, 
     rootVisible: false, 
     width: 200, 
     root: { 
      children: [ { 
       text: 'Menu 1', 
       children: [{ text: 'Menu 1.1',leaf: true }] 
      } ] }, 
     renderTo: Ext.getBody() 
    }); 
}); 

問候, 安妮

回答

2

在5.0你可以打電話只是tree.getStore()tree.getRootNode().getTreeStore()其中treeExt.tree.Panel實例。

但你不需要這樣做,因爲recorditemclick處理程序具有從NodeInterface所有方法。試試這個:

itemclick: function(self, node, item, index, event) { 
    if (node.data.href=='') { 
     if (node.isExpanded()) { 
      node.collapse(); 
     } else { 
      node.expand(); 
     } 
    } 
} 

工作例如:http://jsfiddle.net/9KJME/1/

1

@Lolo已經描述的解決方案。至於它爲什麼不同 - self參數是Ext.tree.View,而不是Ext.tree.Panel。它有不同的方法。

Ext.tree.View確實有getStore()方法,但不是getRootNode()

相關問題