我正在使用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
来实现这一点。
答案 0 :(得分:0)
嗯,将模型和表单设置在同一个控制器的范围内并不罕见(因为它很自然)。
如果是这种情况,您可以按$scope.model.X = modelValue
设置X.
或许您处于无法达到模型范围的位置,在这种情况下,它更复杂。另一方面,我建议在同一个地方完成所有工作。
(有时候这是不可能的。例如,我的应用程序中有动态表单和模式,但在这些情况下,我使用通用功能,如ASFDS或ASF conditions中的过滤功能,并避免困难 - 使用onChange编码UI。
例如,如果在plunkr中更改了foo,则会设置foo2:
onChange: function(modelValue,form) {
if (modelValue) {
$scope.model.foo2 = ["Yes"];
}
},