我想添加/删除标签。
我知道添加/删除方法。但我的问题是我想再次重新添加相同的标签。重新添加的选项卡存储在内存中。我希望能够做到这样的事情:
function addMyTab(tab) {
var me = this;
if (!tab) { // use most recently added tab
tab = me.tab;
} else { // update most recently added tab
me.tab = tab;
}
var tabPanel = Ext.ComponentQuery.query(..);
tabPanel.removeAll();
tabPanel.add(me.tab);
}
然而,这不起作用,它会抛出此错误:
未捕获的TypeError:无法读取属性' addCls'为null
Extjs forum thread表明这是由于尝试添加已经被破坏的元素。
如何重新使用标签?
答案 0 :(得分:3)
由于您似乎在说您正在重新添加要删除的相同面板,我猜测在删除步骤后面板正在被销毁。我认为这样的事情应该有效:
// initially add the panel
tabPanel.add(myPanel);
// remove it with autoDestroy set to false so Ext doesn't kill your panel
tabPanel.removeAll(false);
// re-add the panel
tabPanel.add(myPanel);
答案 1 :(得分:0)
尝试这样的事情:
var currentTab = null;
function addMyTab(tab) {
var me = this;
if (tab) { // use most recently added tab
currentTab = tab;
}
var tabPanel = Ext.ComponentQuery.query(..);
tabPanel.removeAll();
tabPanel.add(currentTab );
}
currentTab是一个全局变量。如果传递新选项卡以更新当前选项卡,请将当前选项卡替换为新选项卡,否则请按原样使用当前选项卡。确保在第一次使用currentTab之前,使用某个选项卡初始化它。