Добрый день, есть 2 вкладки, одну из которых необходимо скрывать при условии. Но при удалении выделенной вкладки из коллекции tabscollection почему то остаются элементы этой текущей вкладки.
var TabCandidatesList = tabsCollection.contains("TabCandidatesList") ? tabsCollection.get("TabCandidatesList"):false;
if (!TabCandidatesList)
tabsCollection.insert(0, "TabCandidatesList", Terrasoft.TabCandidatesList);
var TabConditions = tabsCollection.contains("TabConditions") ? tabsCollection.get("TabConditions"):false;
if (TabConditions) {
Terrasoft.TabConditions = TabConditions;
tabsCollection.removeByKey("TabConditions");
}Как это можно сделать правильно? Хотелось бы при изменении условия вставить вкладку и сразу отобразить ее.
Нравится
В твоем случае возможно лучше делать так...
//hide
closeTabs: function() {
var tabsCollection = this.get("TabsCollection");
tabsCollection.eachKey(function(tabName, tab) {
var tabContainerVisibleBinding = tab.get("Name");
this.set(tabContainerVisibleBinding, false);
}, this);
},
//activate
setActiveTab: function(activeTabName) {
this.closeTabs();
this.set("ActiveTabName", activeTabName);
this.set(activeTabName, true);
},
Вы не удаляйте вкладку, а скрывайте ее:
init: function() {
this.callParent(arguments);
var scope = this;
require(["jQuery"], function() {
scope.hideTabs();
});
},
hideTabs: function() {
$(document).bind("DOMNodeInserted", function(e) {
if (e.target.id === "Нужный контейнер") {
var tabs = Ext.getElementById("Нужный элемент");
var tab = Ext.get(tabs.children[1]);
if (Условие при котором скрывать) {
tab.setWidth(0);
tab.hide();
}
else {
tab.setWidth("auto");
tab.show();
}
}
}.bind(this));
}
Через DOM работать не получится, т.к. содержимое вкладок подгружается только после нажатия на вкладку... я попробовал работать по схеме описанной в этой теме но видимо есть нюансы работы. Подскажите, если ли возможно ли назначить активную вкладку из кода используюя tabscollection?
Попробуй так активировать вкладку
var activeTabName = "GeneralMacrosTab";
this.set("ActiveTabName", activeTabName);
this.set(activeTabName, true);
В твоем случае возможно лучше делать так...
//hide
closeTabs: function() {
var tabsCollection = this.get("TabsCollection");
tabsCollection.eachKey(function(tabName, tab) {
var tabContainerVisibleBinding = tab.get("Name");
this.set(tabContainerVisibleBinding, false);
}, this);
},
//activate
setActiveTab: function(activeTabName) {
this.closeTabs();
this.set("ActiveTabName", activeTabName);
this.set(activeTabName, true);
},
Литвинко Павел,
Спасибо! Подкорректировал Ваш код и свой и вышло то что нужно)