3

Sencha のボーダー レイアウト用 API では、次のように記述されています。

ExtJS 4.0+ には BorderLayout.Region クラスはありません

センターパネルにアクセスするために、さまざまなブログで見つけたのは次のとおりです。

var viewPort = Ext.ComponentQuery.query('viewport')[0];
var centerR = viewPort.layout.centerRegion;

再びドキュメントを見ると、それcenterRegionはプライベートな機能であることがわかります (なぜですか?)。将来の証明のために、それらに依存することは気にしません。また、、、などはありませwestRegionnorthRegion...

これらのアイテムに到達するにはどうすればよいですか?
もちろん、さまざまなパネルなどの領域内のアイテムを取得することもできますが、ボーダー レイアウトを保持するビューポートを完全に制御したいと考えています。これは私が今していることです:

    var viewPort = Ext.ComponentQuery.query('viewport')[0];
    var view = Ext.widget('my-new-tab-panel');

    viewPort.layout.centerRegion.removeAll();
    viewPort.layout.centerRegion.add(view);

より良い方法はありますか?

4

1 に答える 1

2

通常、使用するコンテナごとにIDを設定します。したがって、私の中央の領域にはIDがあり、Ext.getCmp()関数を使用して取得します。

それ以外の場合、ビューポートアイテムにアクセスするには、次のようにします。

var viewPort = Ext.ComponentQuery.query('viewport')[0];
var view = Ext.widget('my-new-tab-panel');

viewPort.items.items[0].removeAll();
viewPort.items.items[0].add(view);

ビューポートの最初の項目として中央領域を定義した場合、上記のコードは問題ありませんが、3番目または4番目として定義した場合は、領域の位置に応じてインデックスを変更する必要があります(viewPort .items[3]またはviewPort.items[4]など)。

別の方法は、クエリセレクターを使用することです。

var cr = viewPort.down('panel[region=center]');
cr.removeAll();
cr.add(view);

ただし、この方法に従うと、正確にxtypeでクエリを実行する必要があります(この場合はパネルとして)。

とにかく、地域ごとにIDを使うのが一番いい方法だと思います。

于 2012-09-23T12:11:43.270 に答える