私のウェブサイトでは、異なるページ(複数ページのウェブサイトになる)を読み込むために、私はid 'content-panel'を持つメインパネルを持っています。
私は別のページをロードするときに、私は 'content-panel'にしたいページ(パネル)をロードする 'loadPage'と呼ばれるjavascript関数を持っています。私はロードしたい
しかし、ページが、このコードを持つことがあります。それはloginPanel
あるページ/パネルをロードしている。この場合ExtJS Loading panels repeated
Ext.require(['*']);
Ext.onReady(function() {
...
var panel = Ext.Cmp('content-panel');
panel.add(loginPanel);
panel.layout.setActiveItem(loginPanel);
panel.doLayout();
panel.setLoading(false);
});
を、それは私にとってExt.onReady
内で定義され、これは結構です、私は自分のウェブサイトがマルチページであることを他の方法で知らない。
しかし、私がページに行きたいときはいつでも、前にすでに読み込まれていても、そのページを 'コンテンツパネル'に読み込みます。私は 'コンテンツパネル'の項目の中にない場合にのみ 'コンテンツパネル'にページを追加する方法が欲しい。
UPDATE:私はExtJSのでCodeIgniterのを使用していloadPage('Ctl_base/view_admin/mainPage', Ext.getCmp('panel'));
:ここ
は、このように使われloadPage
function swap(parent, replacement, url) {
var alpha = document.querySelector(parent);
var target = alpha.childNodes[0];
var omega = document.createElement(replacement);
omega.src = url;
omega.type = 'text/javascript';
alpha.replaceChild(omega, target);
}
function loadPage(panel, toPanel) {
toPanel.setLoading(true);
swap('head', 'script', panel);
}
です。
を私はloginPanel
が存在しない場合にのみ、panel.add(loginPanel)
をしたい:私はすでに試してみました何
。
私が試してみました:
if(panel.getComponent(loginScreen) == undefined) { panel.add(loginPanel); }
をし、それがpanel
はすでにその成分を持っている場合でも、コンポーネントを追加します。
私も試してみました:
function hasComponent(parent, child) {
parent.items.items.forEach(function(item) {
if(item == child){
return true;
}
});
return false;
}
if(!hasComponent(panel, loginPanel)) { panel.add(loginPanel); }
をし、それはまた、動作しません。
を入れています。 – Alexander
@Alexander 'loadPage'で更新されました – alexandre1985
私はあなたが最初に試して、いくつかの動作しないコードが付属していると思います。私は、(a)すべてのページのJSファイルを置き換えるのではなく、増加するリストに追加すること、(b)そのリスト内の既に読み込まれたページを見つけること、(c)「コンテンツパネル」内のそれぞれのコンポーネントを見つけることアイテム一覧。 – Alexander