当字段值改变时设置不同字段的值

Set the value of a different field when a field value changes

我正在使用 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 侦听器的范围内。

更新

第二个例子是this Plunker demo。假设我们想在名称字段中输入一些文本时清除 2 个复选框(通过从模型中删除相应的属性),如何实现?

我还应该指出,出于不想让您厌烦的原因,我无法使用条件和 destroyStrategy.

来实现它

嗯,在同一个控制器的范围内设置模型和表单并不少见(因为这很自然)。 如果是这样,您可以通过 $scope.model.X = modelValue.

设置 X

或者你处在无法到达模型范围的位置,那样的话就比较复杂了。另一方面,我建议在同一个地方做这一切。

(有时这是不可能的。例如,我的应用程序中有动态表单和模式,但在这些情况下,我使用通用功能,如 ASFDS or ASF conditions 中的过滤器功能,并避免使用 hard-coding UI 使用 onChange) .

例如,如果在 plunkr 中更改了 foo,这将设置 foo2:

onChange: function(modelValue,form) {
    if (modelValue) {
        $scope.model.foo2 = ["Yes"];
    }
},