Изменение поля в Groupedit в зависимости от значения в другом поле
В ember-flexberry существует возможность настроить зависимость одного поля в groupedit от значения другого поля этой же строки. Логику зависимости можно определить согласно конкретной задаче.
Например, существует задача, согласно которой требуется, чтобы поле Flag становилось недоступно для изменения в том случае, если в поле Enumeration введено значение Block Flag.

Для реализации данной логики нужно:
- Создать в контроллере observer, отлавливающий изменения в каждом поле столбца
Enumeration:
enumerationObserver: observer('model.details.@each.enumeration', function () {
const details = this.get('model.details').toArray();
details.forEach((detail) => {
let rowConfig = detail.rowConfig;
if (rowConfig) {
this.send('configurateRow', rowConfig, detail);
}
});
}),
- В экшене
configurateRow, к которому обращаетсяenumerationObserver, реализовать логику зависимости поляFlagот значения поляEnumerationсоответствующей строки:
actions: {
configurateRow(rowConfig, detail) {
let enumeration = detail.enumeration;
if (enumeration === 'Block Flag') {
set(rowConfig, 'readonlyColumns', ['flag']);
} else {
set(rowConfig, 'readonlyColumns', []);
}
}
}
Реализация данного примера доступна на тестовом стенде. Для блокировки поля Flag нужно выбрать Block Flag в списке поля Enumeration.