Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法关闭可关闭的选项卡并激活选项卡_Javascript_Extjs - Fatal编程技术网

Javascript 无法关闭可关闭的选项卡并激活选项卡

Javascript 无法关闭可关闭的选项卡并激活选项卡,javascript,extjs,Javascript,Extjs,我做了一个演示,演示了这些问题。第一个问题是无法关闭选项卡栏中可关闭的选项卡。代码非常简单,如下所示: Ext.create("Ext.tab.Bar",{ renderTo: "one", items:[{"text":"One","closable":true},{"text":"Two","closable":true}

我做了一个演示,演示了这些问题。第一个问题是无法关闭选项卡栏中可关闭的选项卡。代码非常简单,如下所示:

Ext.create("Ext.tab.Bar",{
   renderTo: "one",
   items:[{"text":"One","closable":true},{"text":"Two","closable":true}]
}); 
文件上说,

可关闭:布尔可绑定

True使选项卡可关闭并显示关闭图标

因此,该属性不仅与关闭图标有关,还与要关闭的行为有关

我面临的第二个问题是,不可能通过tabbar激活添加到tabpanel的选项卡。代码也非常简单:

Ext.create("Ext.tab.Panel",{
    renderTo: "two",
    id: "test2",
    items:[{"title":"One","closable":true},{"title":"Two","closable":true}],
    listeners: {
        render: function () {
            this.getTabBar().add({"text":"Three"});
        }
    }
});
只要尝试激活最后一个选项卡,您就会失败。如果在此选项卡上设置了
active
属性,则无法停用此选项卡。那么,我们如何解决这一切呢

TabBar由Ext.tab.Panel在内部使用,通常不应使用 需要手动创建

tabbar的实现依赖于它是tabpanel的一部分这一事实。如果我们深入研究它的源代码,我们将看到在“”方法实现中,它检查是否有底层卡要关闭:

if (tabPanel && card) {...
与第二个行为相关,如果您将检查“doActivateTab”方法实现,也在tabbar源代码中,您将看到:

doActivateTab: function(tab) {
    var tabPanel = this.tabPanel;

    if (tabPanel) {
        // TabPanel will call setActiveTab of the TabBar 
        if (!tab.disabled) {
            tabPanel.setActiveTab(tab.card);
        }
    } else {
        this.setActiveTab(tab);
    }
}
因此,如果没有tabpanel,它将只激活选项卡,如果有,它将调用tabpanel的“”,如果它没有找到要激活的选项卡上的卡,则激活上一个选项卡

不应直接添加到选项卡栏,而应添加到选项卡面板:

this.add({"title":"Three"});
这是一张工作票。似乎需要在渲染后设置setactivetab