Ext.tree.Panel、itemclick、getTreeStore() 在 5.x 中找不到,但在 4.x 中有效
Posted
技术标签:
【中文标题】Ext.tree.Panel、itemclick、getTreeStore() 在 5.x 中找不到,但在 4.x 中有效【英文标题】:Ext.tree.Panel, itemclick, getTreeStore() not found in 5.x but works in 4.x 【发布时间】:2014-09-10 22:17:13 【问题描述】:此代码在 4.x 中可以正常工作。目标是通过单击打开/关闭树项目。 在 5.x 中单击后发生错误:“self.getTreeStore 不是函数” 我在 API 文档中找不到相关的更改。 你能告诉我为什么 4.x 和 5.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()
);
);
问候, 安妮
【问题讨论】:
【参考方案1】:@Lolo 已经描述了解决方案。至于为什么它的工作方式不同 - self
参数是 Ext.tree.View
,而不是 Ext.tree.Panel
。它有不同的方法。
Ext.tree.View
确实有 getStore()
方法,但没有 getRootNode()
【讨论】:
【参考方案2】:在 5.0 中,您可以只调用 tree.getStore()
或 tree.getRootNode().getTreeStore()
,其中 tree
是 Ext.tree.Panel
的实例。
但您不需要这样做,因为record
中的itemclick
处理程序具有来自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/
【讨论】:
以上是关于Ext.tree.Panel、itemclick、getTreeStore() 在 5.x 中找不到,但在 4.x 中有效的主要内容,如果未能解决你的问题,请参考以下文章
对于 Ext.tree.Panel 节点,即使使用了 useArrow 属性,也不会显示箭头按钮
解决Ext 4.0.7 tree.Panel横向不出滚动条,纵向滚动条失效的问题