2

コンポーネントを拡張/サブクラス化する正しい方法はどれですか?

Ext.define('Holidays.Components.UserInfo', {
extend: 'Ext.panel.Panel',
alias: 'widget.UserInfo',
region: 'west',
split: true,
title: 'Categories',
width: 300,
collapsible: true,
layout: 'border',
animCollapse: false,

initComponent: function () {
    var me = this;

    Ext.apply(me, {
        items: [{
            xtype: 'panel',
            region: 'center',
            border: false
        }, {
            xtype: 'panel',
            title: 'Tab 2',
            region: 'south',
            collapsible: true,
            height: 200
        }, ]
    });
    me.callParent(arguments);
}
});

またはこれ:

Ext.define('Holidays.Components.UserInfo', {
extend: 'Ext.panel.Panel',
alias: 'widget.UserInfo',

initComponent: function () {
    var me = this;

    Ext.apply(me, {
        width: 300,
        collapsible: true,
        layout: 'border',
        animCollapse: false,
        region: 'west',
        split: true,
        title: 'Categories',
        items: [{
            xtype: 'panel',
            region: 'center',
            border: false
        }, {
            xtype: 'panel',
            title: 'Tab 2',
            region: 'south',
            collapsible: true,
            height: 200
        }, ]
    });
    me.callParent(arguments);
}
});

このように、最初のバージョンを使用してクラスのインスタンスを作成すると

this.userPanel = Ext.create("Holidays.Components.UserInfo");

折りたたんだときにパネルにアニメーションが表示され、奇妙なレイアウト動作が発生します。

define で設定できるプロパティと initComponent で設定する必要のあるプロパティはどれですか?

4

1 に答える 1

1

タイトルの質問の完全な説明は、こちらにあります。私が Molecular Man に残したコメントも読んで、私のコメントに含まれているリンクを見てください。

なぜ最初のバージョンでこの奇妙な動作が発生するのかはわかりませんが、そうであってはならないことはわかっています。最初のバージョンを使用していて、InitComponent にlayoutanimCollapseconfigs があるとどうなるか教えていただけないでしょうか? また、このコンポーネントを複数回作成する可能性はありますか?

于 2012-06-27T09:46:02.097 に答える