Вопрос

Действия в карточке не скрываются по условию при комбинированном режиме

Не работают свойства Enabled и Visible для действий в комбинированном режиме. Версия 7.6

Пример реализации, который работал в 7.5, но не работает в 7.6

          onEntityInitialized: function() {
                this.set("isOutsideSupply", true);
                this.callParent(arguments);
            },
            getActions: function() {
                var actionMenuItems = this.callParent(arguments);
                actionMenuItems.addItem(this.getActionsMenuItem({
                    "Caption": "Спецификация Teleton",
                    "Tag": "specificationTeleton",
                    "Visible": {"bindTo": "isOutsideSupply"}
                }));
                return actionMenuItems;
            },

            initCardActionHandler: function() {
                this.callParent(arguments);
                var propertyNames = [
                    "isOutsideSupply, isInsideSupply", "SxAmountCaption"
                ];
                this.Terrasoft.each(propertyNames, function(propertyName) {
                    this.on("change:" + propertyName, function(model, value) {
                        this.sandbox.publish("CardChanged", {
                            key: propertyName,
                            value: value
                        }, [this.sandbox.id]);
                    }, this);
                }, this);
            },

Также пробовал биндить на метод. Результат тот же.

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

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

На сколько я могу судить, код вполне работоспособен на версии 7.6, в зависимости от того, конечно, какую задачу вы им хотите решить.
Функции initCardActionHandler и onEntityInitialized это функции BasePageV2, следовательно переопределяете их вы в схеме страницы.

Что вы делаете:
1. Объявляете свойство, (без разницы, где вы его на странице и в каком методе будете менять, я для теста буду его менять по нажатию кнопки).
2. Добавляете Action "Спецификация Teleton" на страницу и биндите его видимость на свойство.
3. Публикуете сообщение для схемы секции, которое будет срабатывать по изменению вашего свойства.

Посмотрел ваш код на версии 7.6.0.1578
Добавил его на схему страницы контакта, плюс метод который будет менять значение свойства:

methods: {
	    testClick: function() {
	        this.set("isOutsideSupply", true);
	    },
 
	    onEntityInitialized: function() {
                this.set("isOutsideSupply", false);
                this.callParent(arguments);
            },
            getActions: function() {
                var actionMenuItems = this.callParent(arguments);
                actionMenuItems.addItem(this.getActionsMenuItem({
                    "Caption": "Спецификация Teleton",
                    "Tag": "specificationTeleton",
                    "Visible": {"bindTo": "isOutsideSupply"}
                }));
                return actionMenuItems;
            },
 
            initCardActionHandler: function() {
                this.callParent(arguments);
                var propertyNames = [
                    "isOutsideSupply"
                ];
                this.Terrasoft.each(propertyNames, function(propertyName) {
                    this.on("change:" + propertyName, function(model, value) {
                        this.sandbox.publish("CardChanged", {
                            key: propertyName,
                            value: value
                        }, [this.sandbox.id]);
                    }, this);
                }, this);
            },
},

Добавил кнопку которая будем менять значение:

{
		"operation": "insert",
		"name": "Test",
		"parentName": "Header",
		"propertyName": "items",
		"values": {
			"itemType": Terrasoft.ViewItemType.BUTTON,
			"caption": "Test",
			"click": {"bindTo": "testClick"},
			"layout": {"column": 0, "row": 4, "colSpan": 12}
		}
},

При загрузке страницы вижу что экшена в списке нет, т.к. по умолчанию я прописал ему "this.set("isOutsideSupply", false);"
После же нажатия кнопки он появляется. Бинд на видимость работает.

Так же, в то же время в результате публикации сообщения CardChanged, срабатывает прослушка сообщения в BaseSectionV2:

Абсолютно все, что написано в вашем коде, делает то, что и должно делать.

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