我是javascript中的新手并且有些头疼..我注意到“this”对象,在事件处理函数内部不是主类,就像这里:
Ext.define('App.controls.VerticalMenu', {
extend: 'Ext.panel.Panel',
setMenu: function(item) {
"this" here, is a "VerticalMenu"
var theBtn = Ext.create('App.controls.VerticalMenuItem',{
listeners: {
onOpenClose: function(btn){
"this" here is a "VerticalMenuItem"
}
}
});
},
如何在此事件处理函数中访问主“this”对象(VerticalMenu)?
答案 0 :(得分:2)
很多人使用“我”。例如:
Ext.define('App.controls.VerticalMenu', {
extend: 'Ext.panel.Panel',
setMenu: function(item) {
var me = this;
var theBtn = Ext.create('App.controls.VerticalMenuItem',{
listeners: {
onOpenClose: function(btn){
me.DoSomethingUseful();
}
}
});
},
答案 1 :(得分:1)
J Torres的回答是单向的。在Ext中,根据您添加侦听器的方式,有时您可以指定范围。
setMenu: function(item) {
var theBtn = Ext.create('App.controls.VerticalMenuItem',{});
theBtn.on('openclose',function(btn){
//what we want to do
}, this); // Preserves the current scope of this for use inside the handler
},