字段值更改时设置不同字段的值

时间:2016-01-11 19:57:03

标签: angularjs angular-schema-form

我正在使用Angular Schema Form,我希望在字段值更改时将model属性设置为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来实现这一点。

1 个答案:

答案 0 :(得分:0)

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

或许您处于无法达到模型范围的位置,在这种情况下,它更复杂。另一方面,我建议在同一个地方完成所有工作。

(有时候这是不可能的。例如,我的应用程序中有动态表单和模式,但在这些情况下,我使用通用功能,如ASFDSASF conditions中的过滤功能,并避免困难 - 使用onChange编码UI。

例如,如果在plunkr中更改了foo,则会设置foo2:

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