我在按钮的监听器范围内遇到了麻烦

时间:2012-07-27 11:43:23

标签: javascript extjs

我正在尝试在执行未在与窗口相同的文件中定义的函数后关闭窗口。

我将尝试解释所涉及的类的结构:

有两个类, Class1.js Class2.js ,在Class1.js中定义了一个函数 function1(){} function2(){} 在Class2.js中定义

工作原理:

function2在Class1.js中调用,打开一个窗口,它接收为参数function1 ,如:

函数2(功能1);

function1它在新窗口上单击按钮时执行,也在Class2.js中定义:

var win = new Ext.Window({  
    id: 'win that I want to close',
    .  
    .  
    .   
    buttons: [{  
              id: 'button that activates function1',  
              text: 'button1',  
              listeners: {  
                    click:  function1  
                  },  
                  scope: win  
              },
              .
              .
              .
             ]

});  
win.show();

在Class1.js中,在function1我试着这样做:

if(this.id == 'win that I want to close'){
    this.close();
}

但是我得到的范围是新窗口中的按钮,而不是窗口的范围,所以我无法关闭它。

我知道我的解释很糟糕,但不容易解释,我完全陷入困境。

恭喜你,如果你试图找不到我写的东西,你会非常勇敢!谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我有解决方案:

listeners: {
    'click': {
        fn: function1,
        scope: {
            winid: 'win that I want to close'
        }
    }
}

然后,我可以从Ext.getCmp(this.winid)获得Class1的元素。