0

次のコード ブロックに問題があります。

run: function(e, row){
    var me = this;

    var container = Ext.getCmp('centercontainer');

    try {
        container.removeAll();
    } catch(e) {  }

    // This block is called from another file, I just put it here to show you.
    me.panels = [{
        xtype: 'tabpanel',
        id: 'containertabpanel',
        items: [{
            itemId: 'package',
            title: me.PackageTitle
        },{
            itemId: 'excursion',
            title: me.ExcursionTitle
        }]
    }];

    // Reset
    container.setTitle(me.EditDestinationTitle + row.data.name);
    container.add(me.panels);
    me.tabs = container.getComponent('containertabpanel');

    // console.log(Ext.ComponentQuery.query('#containertabpanel > #package'))

    me.control({
        // Work with 
        // 'tab': {

        // Doesn't work
        'containertabpanel > package': {
            mouseover: me.doPackage
        }
    })

},

tabpanel コンポーネントの「パッケージ」アイテムのクリックイベントをキャッチする方法を知っている人はいますか? this.control クエリで「タブ」セレクターのみを使用すると動作することがわかりましたが、「パッケージ」タブ コンポーネントのみを取得することはできません。

前もって感謝します。

4

3 に答える 3

0

タブパネルの定義で、指定できます-

listeners:{
    click:{
        fn: function(){
           //click handling code goes here
        }
    }
}
于 2012-02-09T22:27:21.997 に答える
0

私が正しく理解している場合、これはコントローラーコードであり、タブパネルの多くのパネルの1つであるパネルのアイテムクリックをキャッチしようとしています

できることは、次のようなコンポーネント クエリ構文を使用して、パネルに固有の任意のプロパティでパネルを識別することです。 button[myprop=blah]
この構文は、次の構成を持つページ上の任意のボタンと一致します。

{
    xtype:'button' 
    myprop:'blah'
}

あなたの場合、試すことができますtab[itemId=package]

注意する必要があるのは、コントローラーがコンポーネントによって起動されるイベントのみをリッスンできることです。リッスンしているイベントが発生していることを確認してください (ドキュメントを確認してください)。必要に応じて、いつでもカスタム イベントを発生させることができます。

于 2012-02-10T06:06:15.177 に答える
0

これを行う必要があります

me.control({
    // Work with 
    // 'tab': {

    // Doesn't work
    'containertabpanel > #package': {
        mouseover: me.doPackage
    }
})
于 2016-03-01T14:06:36.707 に答える