Enabled множества полей карточки и bindTo на единственный метод
Коллеги. Добрый день. Есть потребность управлять доступностью большого множества полей на карточке. Для примера имеем:
"operation": "insert",
"name": "UsrNumberField",
"values": {
"layout": {
"colSpan": 12,
"rowSpan": 1,
"column": 0,
"row": 0,
"layoutName": "Header"
},
"bindTo": "UsrNumber",
"labelConfig": {},
"enabled": {"bindTo": "getEnablePropertyOfFields"}
},
"parentName": "Header",
"propertyName": "items",
"index": 0
},
getEnablePropertyOfFields: function(arg) {
console.log(arg);
},
}
При рендере страницы метод вызывается 4 раза подряд. Вывод такой:
UsrNumber
undefined
undefined
И это только для одного поля. Такой расклад не устраивает. Почему 4 раза? Куда пропадает аргумент? Хочется всё же написать один метод для всех полей объекта, который по определенным условиям выставляет доступность поля. Соответственно не получая в аргументе названия поля ничего не получится.
Версия 7.8.2. Есть идеи? Писать на каждое поле свой метод - несколько безумно на мой взгляд.
Если вдруг есть инфа, что на 7.9.х это починили или такое не замечено, то тоже дайте знать.
Нравится
Биндитесь на атрибут, и им уже управляйте в событийной модели.
Биндинг на метод - идея плохая, 4-ре раза это Вам повезло, когда я задавался этим вопросом он вызывался 12-ть раз.
http://www.community.terrasoft.ru/forum/topic/25151
http://www.community.terrasoft.ru/forum/topic/25084
"Севостьянов Илья Сергеевич" написал:Биндитесь на атрибут, и им уже управляйте в событийной модели.
Биндинг на метод - идея плохая, 4-ре раза это Вам повезло, когда я задавался этим вопросом он вызывался 12-ть раз.
http://www.community.terrasoft.ru/forum/topic/25151
http://www.community.terrasoft.ru/forum/topic/25084
Уже прочел Ваши темы. Заводить овер 60 атрибутов грустно. В методе планировалось сделать свич по имени колонки и для каждой свою логику делать. А теперь придется такой же метод писать, но для атрибутов и еще тонну атрибутов заводить.
"Темченко Кирилл Александрович" написал:А теперь придется такой же метод писать, но для атрибутов и еще тонну атрибутов заводить.
теги пробовали? (в values поля "tag": "testElement", в функции вставить дебаггер и посмотреть что в arguments приходит)
"Варфоломеев Данила" написал:теги пробовали? (в values поля "tag": "testElement", в функции вставить дебаггер и посмотреть что в arguments приходит)
занятно.
теперь:
UsrNumber UsrNumber testElement testElement
Этому поведению можно доверять теперь? Привязывать логику на тэги?
"Темченко Кирилл Александрович" написал:Привязывать логику на тэги?
Обычно в конфигурации клики через теги отлавливаются. Если и тут работает, то почему бы и нет)
"Темченко Кирилл Александрович" написал:Уже прочел Ваши темы. Заводить овер 60 атрибутов грустно. В методе планировалось сделать свич по имени колонки и для каждой свою логику делать. А теперь придется такой же метод писать, но для атрибутов и еще тонну атрибутов заводить.
Опишите подробнее Ваш кейс, скорее всего мы найдем для Вас оптимальное решение :)
Уже всяко понапридумывали "обходных путей".
Например, это не очевидно и нигде не освещается на Академии, но методом опытного "тыка", определено, что многие кейсы можно реализовать не биндингом а через dependesies, а самое занятное что
arguments: { ... "SomeColumn": { "dependencies": [ { "columns": ["SomeColumn"], "methodName": "SomeColumnChangeHandler" "argument": "Что угодно" } ] }, ...
существует "волшебный" argument через который можно передавать в метод-обработчик произвольную информацию, она попадет в функцию первым аргументом, вторым пойдет имя колонки зависимость которой сработала.
Так что завернув ваш кейс в обработку изменения - можете получить необходимый свитч, я думаю.
Илья. Спасибо. Положу в копилку. Задачу уже решил. С помощью единственного метода и передачи в него тега.