如何在extjs中重新添加已删除的选项卡

时间:2013-07-20 22:27:06

标签: javascript extjs extjs4.1 extjs3 extjs4.2

我想添加/删除标签。

我知道添加/删除方法。但我的问题是我想再次重新添加相同的标签。重新添加的选项卡存储在内存中。我希望能够做到这样的事情:

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表明这是由于尝试添加已经被破坏的元素。

如何重新使用标签?

2 个答案:

答案 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之前,使用某个选项卡初始化它。