Изменить имя вкладки (Tab)

Коллеги, добрый день!

Подскажите пожалуйста, каким образом возможно динамически изменять имя вкладки?

Задача следующая: 

Необходимо рядом с именем вкладки "Файлы" выводить counter связанных вложений. Т.е. выглядеть это должно примерно так: "Файлы (3)".

Как посчитать количество вложений - ясно. Но как изменять имя вкладки?

Добавил в init() следующий код:

var tabsCollection = this.get("TabsCollection");
this.set("Resources.Strings.UsrFilesCounterCaption" , this.get("UsrFileCounter"));
var fileCount = this.get("Resources.Strings.UsrFilesCounterCaption");
tabsCollection.collection.items[3].values.Caption  = fileCount;

Но на странице ничего не изменилось...

Нравится

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

Добрый день, Павел!

Вам необходимо менять модель, а не values, т.е. примерно так:

tabsCollection.collection.items[3].model.attributes.Caption = fileCount;

Или как еще один вариант:

tabsCollection.collection.items[3].set("Caption", fileCount);

 

Как вариант, найти определение в diff нужной вкладки, в values дописать

"caption": {"bintTo": "MyTabCaption"}

Где MyTabCaption - виртуальный аттрибут, определённый в attributes. В него и устанавливайте значения.

Добрый день, Павел!

Вам необходимо менять модель, а не values, т.е. примерно так:

tabsCollection.collection.items[3].model.attributes.Caption = fileCount;

Или как еще один вариант:

tabsCollection.collection.items[3].set("Caption", fileCount);

 

Спасибо!Вот такая функция получилась:

initUsrFileCounterCaption: function() {
					var fileCount = null;
					var tabsCollection = this.get("TabsCollection");
					var recordId = this.get("Id");
					if (recordId && recordId !== null && !this.Ext.isArray(recordId)) {
						var esq = Ext.create("Terrasoft.EntitySchemaQuery", {rootSchemaName: "CaseFile"});
						esq.addColumn("Id");
						esq.addColumn("Case");
						esq.filters.add("CaseFilter", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Case.Id", recordId));
 
						esq.getEntityCollection(function(result) {
							if (result.success) {
								var collection = result.collection;
								if (collection) {
									fileCount = (this.get("Resources.Strings.UsrFilesCounterCaption") + " (" + collection.getCount() +  ") ");
									tabsCollection.collection.items[3].set("Caption", fileCount);
								}
							}
						}, this);
					} else {
						fileCount = (this.get("Resources.Strings.UsrFilesCounterCaption") + " (0) ");
						tabsCollection.collection.items[3].set("Caption", fileCount);
					}
			},

 

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