7.12
sales

Удаление выбранной вкладки

Добрый день, есть 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");
}

Как это можно сделать правильно? Хотелось бы при изменении условия вставить вкладку и сразу отобразить ее.

Нравится

6 комментариев
Лучший ответ

В твоем случае возможно лучше делать так...

//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? 

mcNosferatum,

может быть обновиться до 7.12.4 и использовать это 

http://prntscr.com/kr0luu ?

Попробуй так активировать вкладку

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

 

Литвинко Павел,

Спасибо! Подкорректировал Ваш код и свой и вышло то что нужно)

Показать все комментарии