1

我想添加/删除一个标签。

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

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);
}

但是,这不起作用,它会引发此错误:

未捕获的类型错误:无法读取 null 的属性“addCls”

一个Extjs 论坛帖子建议这是由于试图添加一个已经被破坏的元素。

怎样才能重用标签?

4

2 回答 2

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);
于 2013-07-22T14:29:46.230 回答
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 是一个全局变量。如果传递一个新选项卡来更新当前选项卡,请将当前选项卡替换为新选项卡 it ,否则按原样使用当前选项卡。确保在第一次使用 currentTab 之前,使用一些选项卡对其进行初始化。

于 2013-07-22T06:19:24.197 回答