0

http://www.sencha.com/forum/showthread.php?234909-tab-panel-doesn-t-switch-between-tabs-で提案されているように、タブパネルの初期化イベントに this.callParent(arguments) を追加してみましたwhen-added-dynamicallyですが、次のようになります。

Uncaught Error: this.callParent() was called but there's no such method (doFire) found in the parent class (Ext.Base).

誰かが私を正しい方向に向けることができますか?

ありがとうございました。

私のコントローラーは次のとおりです。

Ext.define('MyApp.controller.MyController', {
    extend: 'Ext.app.Controller',

    config: {
        refs: {
            mytabpanel: '#mytabpanel'
        }
    },

    init: function(application) {

        this.control({
            mytabpanel: {
                initialize: function(component, options){
                    var bar = component.getTabBar();

                    bar.insert(0, { flex:1, xtype:'toolbar', title: '' });

                    bar.insert(bar.getItems().length, 
                    {
                        xtype: 'toolbar',
                        flex: 1,
                        title: '',
                        items: [
                        {
                            xtype : 'button',
                            docked: 'right',
                            ui: 'round',
                            iconCls: 'info',
                            iconMask: true,
                            handler: function(){                       
                            }
                        }
                        ]
                    });
                    this.callParent(arguments);
                }
            }
        });
    }
});

私の見解は次のとおりです。

Ext.define('MyApp.view.MyTabPanel', {
    extend: 'Ext.tab.Panel',

    config: {
        id: 'mytabpanel',
        items: [
            {
                xtype: 'container',
                title: 'Tab 1',
                iconCls: 'info',
                html: 'tab 1'
            },
            {
                xtype: 'container',
                title: 'Tab 2',
                iconCls: 'info',
                html: 'tab 2'
            },
            {
                xtype: 'container',
                title: 'Tab 3',
                iconCls: 'info',
                html: 'tab 3'
            }
        ],
        tabBar: {
            docked: 'bottom'
        }
    }
});

編集 12 月 30 日日曜日午前 6:57 (GMT - 4:00)

ウェブを検索したところ、初期化をオーバーライドしているため、スーパークラスの初期化メソッドを呼び出して、そのコードも実行されるようにする必要があると考えています。user1479606 が指摘したように、 this.callParent を呼び出すことは決して機能しません。そこで、問題は次のようになります: スーパークラスの初期化メソッドを呼び出すにはどうすればよいでしょうか?

4

1 に答える 1

0

コントローラーではなくビューで使用する必要があるため、アプリケーションはあなたのケースでは機能しないと思います。this.callParent(arguments)そうしないと、親クラスは常にExt.Base.

より理解しやすく、より良いアプローチのために、次のような Sencha Touch 2 の規則に従ってください。

config: {
    refs: {
        mytabpanel: '#mytabpanel'
    }

    control: {
        mytabpanel: {
            initialize: 'domytabpanel'
        }
    }
},

domytabpanel: function(component, options) {
    var bar = component.getTabBar();

    bar.insert(0, {
        flex:1, 
        xtype:'toolbar', 
        title: ''
    });

    bar.insert(bar.getItems().length, 
    {
        xtype: 'toolbar',
        flex: 1,
        title: '',
        items: [
        {
            xtype : 'button',
            docked: 'right',
            ui: 'round',
            iconCls: 'info',
            iconMask: true,
            handler: function(){                       
            }
        }
        ]
    });
}

それが役に立てば幸い :)

于 2012-12-30T05:18:26.587 に答える