Скрыть опцию FormIo Radio по условию? - PullRequest
1 голос
/ 05 мая 2020

Можно ли скрыть значение параметра радио на основе ответа на предыдущий вопрос?

Например:

Вопрос 1 (радио): красный или синий?

Вопрос 2 (радио): 10 (только красный), 20 (только красный), (только 30 синих), 40 (только синий)

Я не хочу показывать 10 и 20, если пользователь выбирает синий.

Я не могу разделить второй вопрос на два, потому что свойство API должно быть таким же.

1 Ответ

0 голосов
/ 17 июня 2020

Начиная с formiojs@4 (доступно через https://next.form.io) компоненты имеют возможность определять специфические c логики. Таким образом, вы можете изменить сам компонент в зависимости от различных условий (например, событий или пользовательских javascript).

В принципе, вы захотите запускать logi c всякий раз, когда компонент цвета имеет значение (так он не вызывает ненужных срабатываний при каждом изменении). При этом изменении вы можете обновить значения компонентов в зависимости от значения цвета. Кроме того, очистите значение компонента, если новые параметры не включают его текущее значение.

Например, вы можете выполнить следующее действие:

var values = [];

if (data.color === 'red') {
  values.push(10, 20);
} else if (data.color === 'blue') {
  values.push(30, 40);
}

if (!values.includes(data.option)) {
  delete data.option;
}

schema = {
  values: values.map((value) => ({ label: value.toString(), value })),
};

Проверьте следующий jsfiddle для рабочего примера: https://jsfiddle.net/airarrazaval/btpyfjm8/

...