Вопрос

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

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

 

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

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

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