2014-07-20 16 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()

相关问题