ExtJS 加载面板重复
ExtJS loading panels repetition
在我的网站中,为了加载不同的页面(多页网站),我有一个主面板,其 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);
});
在这种情况下,它加载 page/panel 即 loginPanel
,它在 Ext.onReady
中定义
对我来说这很好,我不知道我的网站有任何其他方式是多页的。
但是每次我想转到一个页面时,它都会将该页面加载到 'content-panel',即使它之前已经加载过。如果页面不在 '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'));
我在 ExtJS 中使用 CodeIgniter。
我已经尝试过的:
我只想在 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); }
而且它也不起作用。
我设法通过在我要加载的面板上放置 itemId 来解决这个问题,在 panel.layout.setActiveItem(loginPanel);
上我放置了 panel.layout.setActiveItem('itemIdOfPanel');
在我的网站中,为了加载不同的页面(多页网站),我有一个主面板,其 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);
});
在这种情况下,它加载 page/panel 即 loginPanel
,它在 Ext.onReady
中定义
对我来说这很好,我不知道我的网站有任何其他方式是多页的。
但是每次我想转到一个页面时,它都会将该页面加载到 'content-panel',即使它之前已经加载过。如果页面不在 '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'));
我在 ExtJS 中使用 CodeIgniter。
我已经尝试过的:
我只想在 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); }
而且它也不起作用。
我设法通过在我要加载的面板上放置 itemId 来解决这个问题,在 panel.layout.setActiveItem(loginPanel);
上我放置了 panel.layout.setActiveItem('itemIdOfPanel');