Установите значение другого поля при изменении значения поля

Я использую форму схемы Angular и хочу установить для свойства модели значение null при изменении значения поля. Я пробовал использовать onChange в определении формы вот так

{
  key: '7_11',
  type: 'radios',
  titleMap: [{value: 'no', name: 'No'}, {value: 'yes', name: 'Yes'}],

  onChange: function(modelValue,form) {
    if (!modelValue) {
      // model['8_1'] = null
    }
  }
}

Обратите внимание, что свойство модели, которое я пытаюсь установить, привязано к полю, отличному от поля, которое изменилось.

Я не могу сделать это так, как указано в комментарии, потому что model не входит в область действия слушателя onChange.

Обновлять

Второй пример — эта демонстрация Plunker. Скажем, мы хотим снять 2 флажка (удалив соответствующие свойства из модели) всякий раз, когда в поле «Имя» вводится какой-либо текст, как этого можно добиться?

Я также должен отметить, что по причинам, которыми я не буду вас утомлять, я не могу реализовать это с помощью условного оператора и destroyStrategy.


person Little Bobby Drop Tables    schedule 11.01.2016    source источник


Ответы (1)


Что ж, нередко (потому что это естественно) устанавливать модель и форму внутри области действия одного и того же контроллера. Если это так, вы можете установить X с помощью $scope.model.X = modelValue.

Или, возможно, вы находитесь в положении, когда вы не можете достичь объема модели, в этом случае все сложнее. С другой стороны, я бы рекомендовал делать все это в одном месте.

(Иногда это невозможно. Например, у меня есть динамические формы и схемы в моем приложении, однако в этих случаях я использую обобщенные функции, такие как функциональность фильтра в ASFDS или условия ASF и избегайте жесткого кодирования пользовательского интерфейса с помощью onChange) .

Например, это установит foo2, если foo изменится в plunkr:

onChange: function(modelValue,form) {
    if (modelValue) {
        $scope.model.foo2 = ["Yes"];
    }
},
person Nicklas Börjesson    schedule 11.01.2016
comment
Я не уверен, что следую. Если у вас есть время, не могли бы вы взглянуть на демонстрацию Plunker и объяснить, как можно решить конкретную проблему, о которой я упоминал в своем обновлении? - person Little Bobby Drop Tables; 12.01.2016
comment
Хорошо, теперь я вижу, насколько мне известно, функция onChange является частью поля в форме, а не в списке свойств схемы. - person Nicklas Börjesson; 12.01.2016
comment
Вы правы, я переместил его в форму, но я все еще не понимаю, как я могу установить значение поля X из слушателя onChange, привязанного к полю Y? - person Little Bobby Drop Tables; 13.01.2016