当没有child面板时关闭整个tabpanel

Close the whole tabpanel when there are no child panel

我有一个标签面板并且有很多孩子。每个都是可关闭的。当没有 children.

时,我想删除 tabpanel 本身
listeners: {
    close: function(element) {
        var detailTabPanel = element.up('DetailTabPanel');
        if(detailTabPanel.items.length <= 1)
        {
           detailTabPanel.destroy();
        }
    }
}

我已经为关闭操作编写了类似上面的代码。但我收到类似

的错误
Uncaught TypeError: Cannot read property 'get' of null DetailTabPanel is the tabpanel.

您使用了错误的事件。您不想监听子项的 close 事件(在从面板中删除选项卡后调用),而是想监听选项卡面板本身的 remove 事件。

快到了!像这样尝试:

listeners: {
    remove: function(tabpanel, child, eOpts) {
        if (tabpanel.items.length === 0) {
            tabpanel.destroy();   
        }
    }
}

请参阅此处 Fiddle:https://fiddle.sencha.com/#fiddle/1fo2

您不必在侦听器中执行 callParent