如何从Ext.tree.Panel内的事件处理程序访问我的treepanel?
以下itemClick代码不起作用。我尝试了'up'和'down'。
Ext.create('Ext.tree.Panel', {
title: 'Example Tree',
width: 200,
height: 450,
store: store,
listeners: {
itemclick: function(dv, record, item, index, e) {
var me = this;
var panel = me.up('treepanel');
var rn = panel.getRootNode(); //panel undefined :(
}
}
}
但是,如果我在工具栏中有一个按钮,它可以正常工作:
dockedItems: [{
xtype: 'toolbar',
dock: 'bottom',
items: [{
text: 'Search',
handler: function () {
var me = this;
var panel = me.up('treepanel');
var rn = panel.getRootNode(); // :)
}
}]
}]
这两个示例都在此fiddle中说明。
答案 0 :(得分:0)
这是范围在ExtJS中的工作方式(更具体地说,在Javascript中)。在第一个例子中,'这个(我)它自己就是treepanel。试试以下
`listeners: {
itemclick: function(dv, record, item, index, e) {
//var me = this;
//var panel = me.up('treepanel');
var panel = this; //'this' is treepanel
var rn = panel.getRootNode();
}
}`
来到第二个例子,如果你观察配置模式,它是一个快捷方式模式,用于在工具栏中创建一个按钮,因此'这个'成为按钮,您可以逐个组件查询。
答案 1 :(得分:0)
当你在面板内时,Bala的方法应该有效。如果它不尝试如下。 itemclick函数的第一个参数是视图。您可以从中获取面板。
listeners: {
itemclick: function(dv, record, item, index, e) {
var panel = dv.up('treepanel');
var rn = panel.getRootNode();
}
}