0

我正在使用 Angular Schema Form,并且我想在字段值更改时将模型属性设置为 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 演示。假设我们想在 Name 字段中输入一些文本时清除 2 个复选框(通过从模型中删除相应的属性),如何实现呢?

我还应该指出,出于我不会让您感到厌烦的原因,我无法使用条件 and 来实现这一点destroyStrategy

4

1 回答 1

0

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

或者您可能处于无法达到模型范围的位置,在这种情况下它会更复杂。另一方面,我建议在同一个地方进行所有操作。

(有时这是不可能的。例如,我的应用程序中有动态表单和模式,但是在这些情况下,我使用通用功能,如ASFDSASF 条件中的过滤器功能,并避免使用 onChange 对 UI 进行硬编码)。

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

onChange: function(modelValue,form) {
    if (modelValue) {
        $scope.model.foo2 = ["Yes"];
    }
},
于 2016-01-11T22:58:17.960 回答