1

私たちのアプリケーションには、パネルを動的に追加/削除する tabpanel があります。

パネルは、メニュー ハンドラーの次のコードによって、メニュー項目のクリックで追加されます。

Ext.getCmp('mainTabPanelId').add(getPanel());

HeregetPanel()メソッドは、作成後にパネルを返します。

メイン タブ パネルの ID がmainTabPanelIdで、子パネルの ID が panelId であると仮定すると、このコンテキストでは、誰かが次のようにガイドできます。

  1. add メソッドの後doLayout()に呼び出す必要がありますか?mainTabPanel
  2. l または新しく追加された子パネル、つまり、または で呼び出すdoLayout()必要がありますか?mainTabPaneExt.getCmp('mainTabId').doLayout()Ext.getCmp('panelId').doLayout()
  3. doLayout()特にスクロールバーなど、レンダリングに関連するすべての問題を処理するための呼び出しはありますか?
  4. このメソッドは、( を使用して)getPanel()作成済みのパネルを返す必要がありますか?Ext.createまたは ( を使用して) 構成オブジェクトを返す必要がありxtype:'panel'ますか? 時間を考慮してパフォーマンスを向上させるには、どちらを優先する必要がありますか?
4

1 に答える 1

2

AbstractContainer::add()

<...> コンテナーがサイズ管理レイアウト マネージャーで構成されている場合、コンテナーはこの時点で内部レイアウトも再計算します。

したがって、次の理由により、13を実行する必要はありません。

AbstractContainer::doLayout()

<...> フレームワークはこれを内部的に使用して、ほとんどの場合にレイアウトを更新します。

AbstractContainer::デフォルト

デフォルトを機能させるには、Ext.create("widget.type",{}) を使用せずに {xtype: ......} を使用して子項目を追加する必要があります © roger.spall

したがって、コンポーネント自体ではなく、構成オブジェクトを返すことをお勧めします。

于 2012-06-28T13:37:32.040 に答える