2

我是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)?

4

2 回答 2

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();
                }
            }
        });
    },
于 2012-07-20T15:04:51.667 回答
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
},
于 2012-07-20T15:11:42.363 回答