ビューポートのレイアウトに対するEXT JSには何も表示されません
-
06-07-2019 - |
質問
ページ全体をリロードせずに既存のコンテナに新しいコンポーネントを追加することに関する多くの例を読んだ後、ビューポートコンポーネント内でツリーとタブを組み合わせているときに小さな問題にぶつかります。
私がやろうとしているのは、クリックイベントでツリーノードに登録し、ノードコンテナの新しいコンポーネントをロードすることです。ノードのタイプによっては、tabpanel、gridpanel、または他の使用可能なコンポーネントです。
ツリーオブジェクトの短い例:
{
xtype: 'treepanel',
id: 'tree-panel',
listeners: {
click: function(n) {
var content = Ext.getCmp('content-panel');
content.setTitle(n.attributes.qtip);
//remove all components from content-panel
content.removeAll();
content.add(dummy_tabs2);
content.doLayout();
return;
}
}
}
すべてのDOM操作が正常に行われ、すべてが適切に登録され、新しいタイトルが表示されましたが、dummy_tabs2は表示されていません。 doLayout(true | false、true | false)のさまざまなプロパティを設定しようとしましたが、何も起こりません。
何か間違ったことをしていますか?
解決
これでわかりましたが、DOMは正常に機能しますが、EXTJSは表示されないプロパティを新しく挿入された要素に適用します。したがって、あとはshow()関数を新しいコンポーネントに適用するだけです。次のコードは次のようになります。
{
xtype: 'treepanel',
id: 'tree-panel',
listeners: {
click: function(n) {
var content = Ext.getCmp('content-panel');
content.setTitle(n.attributes.qtip);
//remove all components from content-panel
content.removeAll();
var container = content.add(dummy_tabs2);
content.doLayout();
container.show();
return;
}
}}
他のヒント
doLayoutの前にdummy_tabs2の幅と高さを設定してみてください。 firebugで調べてください。パネルはあるかもしれませんが、見えません。
API でExt.Panelを読みます。
の子アイテムを指定する場合 パネル、または動的に追加 パネルのコンポーネント、忘れずに パネルにどのようにしたいかを検討する それらの子要素を配置し、 それらの子要素が必要かどうか Extの組み込みのいずれかを使用してサイズを調整する レイアウトスキーム。デフォルトでは、Panelsは ContainerLayoutスキーム。この 単に子コンポーネントをレンダリングし、 それらを次々に追加する コンテナ内にありません サイズ設定を適用します。
これが役立つことを願っています。