Невозможно закрыть закрываемые вкладки и активировать вкладки

1

Я сделал скрипку, которая демонстрирует эти проблемы. Первая проблема заключается в невозможности закрытия закрываемых вкладок в TabBar. Код такой же простой, как:

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

В документации говорится, что

закрываемый: Boolean bindable

Верно, чтобы закрыть вкладку и отобразить значок закрытия

Таким образом, это свойство связано не только с этим близким значком, но и по поводу этого поведения, которое должно быть закрыто.

Вторая проблема, с которой я сталкиваюсь, заключается в том, что невозможно активировать вкладки, добавленные в вкладку через вкладку. Код также очень прост:

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 свойство на этой вкладке, вы не сможете деактивировать эту вкладку. Итак, как мы можем исправить все это?

Теги:
extjs

2 ответа

2
Лучший ответ

TabBar используется внутри Ext.tab.Panel и, как правило, его не нужно создавать вручную.

Реализация табуляции основана на том, что она является частью tabpanel. Если мы выкопаем исходный код, мы увидим, что в реализации метода closeTab он проверяет, закрывается ли базовая карта:

if (tabPanel && card) {...

Что касается второго поведения, если вы проверите реализацию метода doActivateTab, также в исходном коде на вкладке, это то, что вы увидите:

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 " setActiveTab ", если он не найдет карту, прикрепленную к активируемой вкладке, активирует предыдущую вкладка.

Не следует добавлять непосредственно на вкладку, а не добавлять в tabpanel:

this.add({"title":"Three"});
0

Здесь работает скрипка. Кажется, что setactivetab должен быть после рендера.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню