1

パネルにボタンを追加しました。ボタンをクリックすると、ポップアップ ウィンドウが表示されます。setHandler を使用してポップアップの内容を更新しようとしました。しかし、setHandler が呼び出されるたびに、ハンドラー関数がすぐに実行されました。コード例は次のとおりです。


    me.panels[i].getDockedItems()[0].setHandler(Popup({html: tiphtml}), this);
    ...
    Popup = function(cfg) {
      cfg = Ext.apply({
        height: 100, 
        width: 200,
        layout: 'fit'
      }, cfg);

      Ext.create('Ext.window.Window', {
          title: cfg.title,
          height: cfg.height,
          width: cfg.width,
          layout: cfg.layout,
          html: cfg.html 
      }).show();
    }
4

1 に答える 1

2

関数を無名関数にネストする必要があります。実際には、関数を渡すのではなく、コードで関数を呼び出しています。これはうまくいきます:

    me.panels[i].getDockedItems()[0].setHandler(function(){Popup({html: tiphtml})}, this);
    ...
    Popup = function(cfg) {
      cfg = Ext.apply({
        height: 100, 
        width: 200,
        layout: 'fit'
      }, cfg);

      Ext.create('Ext.window.Window', {
          title: cfg.title,
          height: cfg.height,
          width: cfg.width,
          layout: cfg.layout,
          html: cfg.html 
      }).show();
    }
于 2013-02-28T14:14:48.223 に答える