Убирать кнопку очистки в элементе "Профиль связанной сущности" при изменении поля на карточке

Здравствуйте, подскажите пожалуйста.

Есть стандартный элемент "AccountProfile", который отображает данные контакта, работает отлично, но когда блокируешь поля страницы с использованием "IsModelItemsEnabled" то кнопка очистки в контейнере  "AccountProfile" не пропадает.

Саму кнопку нашел, сделал замещение родителя, поставил bind на "visible", написал метод который попадает в bind, там читаю свойство "hideClearButton"

define("BaseProfileSchema", [], function() {
		return {
			methods: {
				isHideClearButton: function(){
					return this.get("hideClearButton");
				}
			},
			diff: [
				{
					"operation": "merge",
					"name": "ClearButton",
					"values": {
						"visible": {
							"bindTo": "isHideClearButton"
						}
					}
				}
			]
		};
	}
);

на странице Page в секцию "modules" поместил модель, в котором "viewModelConfig" положил "hideClearButton"

"AccountProfile": {
	"config": {
		"schemaName": "AccountProfileSchema",
		"isSchemaConfigInitialized": true,
		"useHistoryState": false,
		"parameters": {
			"viewModelConfig": {
				"masterColumnName": "KtAccount",
				"hideClearButton": "checkIsModelItemsEnabled"
			}
		}
	}
},

но если я передаю на прямую true или false тогда все отлично, но мне надо передать туда значение атрибута "IsModelItemsEnabled".

Пробовал создать метод

checkIsModelItemsEnabled: function(){
	return this.get("IsModelItemsEnabled").value;
},

но тогда this.get("hideClearButton") приходит строка "checkIsModelItemsEnabled", а если передать {"bindTo": "isHideClearButton"} тогда приходит строка bindTo: "isHideClearButton"

Нравится

3 комментария

Александр, видимо, нужно не напрямую в параметр передавать, а работать через атрибуты. Так сделано в схеме ServiceParameterGrid:

  modules: {
 
   ServiceParameterPage: {
    moduleId: "ServiceRequestParameterPage",
    moduleName: "ConfigurationModuleV2",
    config: {
     isSchemaConfigInitialized: false,
     schemaName: "ServiceParameterPage",
     parameters: {
      viewModelConfig: {
       ServiceSchemaUId: {
        attributeValue: "ServiceSchemaUId"
       },
       MethodUId: {
        attributeValue: "MethodUId"
       },
       ParameterUId: {
        attributeValue: "ParameterUId"
       },
       CanEditSchema: {
        attributeValue: "CanEditSchema"
       }
      }
     },
     useHistoryState: false
    }
   }
 
  },
  attributes: {
 
   /**
    * UId of schema in ServiceSchemaManager.
    */
   ServiceSchemaUId: {
    dataValueType: Terrasoft.DataValueType.GUID
   },
 
   /**
    * Is allow edit fields.
    */
   CanEditSchema: {
    dataValueType: Terrasoft.DataValueType.BOOLEAN
   },
 
 
   /**
    * UId of method in ServiceSchemaManager.
    */
   MethodUId: {
    dataValueType: Terrasoft.DataValueType.GUID
   },
 
   /**
    * UId of parameter in ServiceSchemaManager.
    */
   ParameterUId: {
    dataValueType: Terrasoft.DataValueType.GUID
   }
 
  },

И далее программно взаимодействовать уже с ними.

Зверев Александр,

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

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

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