在我的网站上,为了加载不同的页面(作为多页面网站),我有一个主面板,其id为'content-panel'。
当我想加载一个不同的页面时,我有一个名为'loadPage'的javascript函数,它将我想要的页面(面板)加载到'content-panel'。
但是我要加载的页面必须包含以下代码:
Ext.require(['*']);
Ext.onReady(function() {
...
var panel = Ext.Cmp('content-panel');
panel.add(loginPanel);
panel.layout.setActiveItem(loginPanel);
panel.doLayout();
panel.setLoading(false);
});
在这种情况下,它正在加载loginPanel
的页面/面板,该页面/面板在Ext.onReady
内定义
对我来说这很好,我不知道我的网站是多页的任何其他方式
但每次我想要转到页面时,它都会将该页面加载到“内容面板”,即使它之前已经加载过。我想要一种方法只将页面添加到'content-panel',如果它不在'content-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);
}
它的用法如下:loadPage('Ctl_base/view_admin/mainPage', Ext.getCmp('panel'));
我正在使用ExtIS的CodeIgniter。
我已尝试过的内容:
仅当panel.add(loginPanel)
不存在时,我才想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); }
它也不起作用。
答案 0 :(得分:0)
我已设法通过在我要加载的面板上放置 itemId 来解决此问题,并在panel.layout.setActiveItem(loginPanel);
上放置panel.layout.setActiveItem('itemIdOfPanel');