Изменение поля в 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
.