1

ExtJs 4.0(Ext Designer 1.2.0)を使用しています。ボタン(タブボタンを追加)とタブパネルを含むカードレイアウトのパネルがあります。各タブには、ボタン付きの個別のツールバーが含まれています。タブの追加btnは、閉じている場合はTab2を追加します。

アプリケーションを実行すると、2番目のタブのボタンのイベントを実行できることを確認しましたが、2番目のタブを閉じて、[タブの追加] btnから動的に追加すると、イベントは実行されません。

助言がありますか??

以下は私のコードです:(MyPanel.js)

    Ext.define('MyApp.view.MyPanel', {
    extend: 'MyApp.view.ui.MyPanel',

    initComponent: function() {
        var me = this;
        me.callParent(arguments);

    me.down('button[id=addTab]').on('click',me.onAddTabClick,me);
    me.down('button[text=Second Button]').on('click',me.onSecondBtnClick,me);
    },

    onSecondBtnClick: function(){
        alert("Second Btn");
    },

    onAddTabClick: function(){

        var myTab = this.down('#myTabPanel').child('#tab2');
        if (myTab) {
            myTab.show();
        } else {
            this.down('#myTabPanel').add({
                    title    : 'Tab2',
                    activeTab: 0,
                    closable : true ,
                    id: 'tab2',
                    items: [{
                        xtype: 'panel',
                        id: 'tab2',
                        closable: true,
                        title: 'Tab 2',
                        dockedItems: [
                            {
                                xtype: 'toolbar',
                                height: 29,
                                id: 'Tab2Toolbar',
                                dock: 'top',
                                items: [
                                    {
                                        xtype: 'button',
                                        text: 'Second Button'
                                    }
                                ]
                            }
                        ]
                    }]  
                }).show();
        }
    }   
});
4

1 に答える 1

0

initComponentの代わりにを使用しているため、が最初に読み込まれinitたときに、イベントが適用されるのは1回だけだと思います。MyPanel代わりにinitconfigを使用すると、ボタンが既に破棄されているかどうかに関係なく、イベントが適切に適用されると思います。

initComponentつまり、 initはイベントを設定するための「適切な」ExtJS 4の方法であるため、ブロックを削除してこれに置き換えてみてください。

init: function (){
  this.control({
    'button[id=addTab]': {
      click: this.onAddTabClick
    },
    'button[text=Second Button]':{
      click : this.onSecondBtnClick 
    }
  });
}

(このコードはコントローラーからのものであり、特にパネルからのものではないため、すぐに機能することを願っていますが、変更が必要になる場合があることに注意してください。コンマを忘れないでください!)

于 2012-01-13T14:54:32.623 に答える