1

1 つのファイルで、2 つのタブを持つタブ パネルを作成しています。別のファイルで使用するコンポーネントを登録しようとしています。次の点を考慮してください。

Ext.ns('DVI');

var backtestTab = {
    xtype: 'groupingstore'
}

var intradayTab = {
    xtype: 'groupingstore'
}

DVI.DviDashboard = new Ext.TabPanel({
    activeTab: 0,
    items: [backtestTab, intradayTab]
});

Ext.reg('dviDashboard', DVI.DviDashboard);

このページでは、タブにグループ ストアが適切に入力されていると想定します。このスクリプトを呼び出すページのコードは次のとおりです。

var dashboard = {
    xtype: 'tabpanel',
    id: 'port_dash-panel',
    activeTab: 0,
    items:[{
        title: 'Dashboard',
        xtype: 'dviDashboard'
    }]
 };

次のエラーが返されます。

b[d.xtype || e] is not a constructor

調査すると、上記のエラーは、コンポーネントが見つからないか、定義されていないことを示しています。

ただし、以下のコードは機能し、タブパネルをレンダリングします。

var dashboard = {
    xtype: 'tabpanel',
    id: 'port_dash-panel',
    activeTab: 0,
    items:[DVI.DviDashboard]
 };

スニペットのみを表示しています。ダッシュボードのタブパネルはビューポートにレンダリングされます。

最初の質問は、この方法でコンポーネントを登録することさえできるのでしょうか? そしてもちろん、2 番目の質問は、なぜこれがうまくいかないのかということです。:)

4

1 に答える 1

2

機能しないインスタンス化されたオブジェクトを登録しようとしています。Ext.reg は通常、Ext.extend メソッドによって作成されたコンポーネントを受け取ります。

DVI.DviDashboard = Ext.extend(Ext.TabPanel,{
    initComponent: function(){

    Ext.apply(this, {
        activeTab: 0,
        items: [backtestTab, intradayTab]
    });

    DVI.DviDashboard.superclass.initComponent.call(this)   
}
});

Ext.reg('dviDashboard', DVI.DviDashboard);

Ext 3.* でのクラスの作成に関する古いリンクがあります: http://blog.extjs.eu/know-how/writing-a-big-application-in-ext/

于 2011-06-13T05:01:11.193 に答える