1

ウィンドウと同じファイルに定義されていない関数を実行した後、ウィンドウを閉じようとしています。

関連するクラスの構造を説明しようと思います。

Class1.jsClass2.jsの2つのクラスがあり、Class1.jsには関数 function1 (){}が定義され、function2(){}はClass2.jsに定義されています。

使い方:

function2はClass1.jsで呼び出され、ウィンドウを開き、次のようなパラメーターfunction1として受け取ります。

function2(function1);

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();
}

しかし、私が取得するスコープは、ウィンドウのスコープではなく、新しいウィンドウのボタンからのものであるため、閉じることができません。

私の説明はかなり悪いことは知っていますが、説明するのは簡単ではなく、この時点で完全に行き詰まっています。

私が書いたものを理解しようとしたなら、おめでとうございます、あなたはとても勇敢です!そしてあなたの助けをありがとう!

4

1 に答える 1

0

私には解決策があります:

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

Ext.getCmp(this.winid)そしてそれで私はから要素を得ることができますClass1

于 2012-07-30T11:56:41.730 に答える