Вопрос

Добрый день.

Подскажите почему может не вызываться метод заголовка для дифф в модуле уведомлений?

Кейс такой: в стандартный модуль уведомлений добавлены гиперссылки на продажу и лид. Сами гиперссылки прописаны отдельными дифами. А так же к ним добавлены текстовые заголовки тоже отдельными дифами. Заголовок для Лида прописан в локализованные строки. А для Продаж значение заголовка достаётся методом из системной настройки.

Проблема в том, что при добавлении продажи с открытым центром уведомлений не происходит вызов метода, прикрученного к свойству "caption" дифа. А для гиперссылки все вызывается и отображается нормально.

diff: [
{
	"operation": "insert",
	"name": "NotificationOpportunityLabel",
	"parentName": "NotificationItemActivityTopContainer",
	"propertyName": "items",
	"values": {
		"itemType": Terrasoft.ViewItemType.LABEL,
		"caption": {"bindTo": "getOpportunityCaption"},
		"visible": {"bindTo": "getActivityOpportunityVisible"},
		"classes": {"labelClass": ["account-comma-contact"]}
	}
}]
methods: {
	processNotificationsCollection: function(items) {
		items.each(this.addColumnLink, this);
	},

	addColumnLink: function(item) {
		var self = this;
		item.getOpportunityCaption = function() {
			self.queryOpportunityCaption.call(self, item);
			return self.get("NotificationOpportunityCaption");
		};
	},

	queryOpportunityCaption: function() {
		Terrasoft.SysSettings.querySysSettingsItem("OpportunityLinkCaptionRemindingSchema", 
			function(value) {
				this.set("NotificationOpportunityCaption",value);
			}, this);
	}
}

Может быть кто сталкивался с таким поведением?

 

У меня такой же вопрос

1 комментарий

Вообще, как таковой биндинг caption на функцию возможен, судя по коду в MultiDeleteResultPageV2. Может, у Вас где-то раньше ошибка и JS-код прекращает выполняться?

{
	"operation": "insert",
	"name": "ByRightsContainerHeader",
	"parentName": "ByRightsContainer",
	"propertyName": "items",
	"values": {
		"itemType": Terrasoft.ViewItemType.LABEL,
		"caption": {"bindTo": "getRightsCaption"},
		"classes": {
			"labelClass": ["container-multi-delete-caption-labelClass"]
		}
	}
},
 
/**
 * Returns caption for block with errors by rights.
 * return {String} Caption.
 * @protected
 */
getRightsCaption: function() {
	var items = this.get("RecordsData").getItems();
	var count = items ? items.length : 0;
	return this.Ext.String.format(this.get("Resources.Strings.ByRightsCaption"), count);
},

А в чём недостаток локализируемой строки перед системной настройкой, значение нужно часто менять? В крайнем случае можно попробовать сделать БП, синхронизирующий значение из настройки в строку на событии изменения настройки, хотя это и «костыль».

Войдите или зарегистрируйтесь, чтобы комментировать