2016-05-18 3 views
0

私のウェブサイトでは、異なるページ(複数ページのウェブサイトになる)を読み込むために、私は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); } 
をし、それはまた、動作しません。

+1

を入れています。 – Alexander

+0

@Alexander 'loadPage'で更新されました – alexandre1985

+0

私はあなたが最初に試して、いくつかの動作しないコードが付属していると思います。私は、(a)すべてのページのJSファイルを置き換えるのではなく、増加するリストに追加すること、(b)そのリスト内の既に読み込まれたページを見つけること、(c)「コンテンツパネル」内のそれぞれのコンポーネントを見つけることアイテム一覧。 – Alexander

答えて

0

私はロードしたいパネルに置くとのitemIdことで、この問題に取り組むために管理している、とpanel.layout.setActiveItem(loginPanel);に私はあなたが助けが必要な場合、あなたは `loadPage`機能を提供する必要がありますpanel.layout.setActiveItem('itemIdOfPanel');