我有一个myForm
表单,其中包含一些输入字段。
我要实现的目标:只有其他输入字段中的至少一个不为空时,每个字段才是required
。
我该怎么做:我在每个字段上设置了ng-required="ctrl.isAtLeasOneFieldSet()"
。此功能检查是否设置了任何字段。
直到这里工作。如果我设置了一个字段,则返回true
,如果未设置任何字段,则返回false
。我也在Firefox的“ developer-console-inspector”中看到了这一点,当我在一个输入字段中设置和取消设置值时,需要在true和false之间进行更改。
什么不起作用:我在控制器中拥有了一个Submit函数:
function submitForm(valid) {
if(!valid) {
return;
}
}
并以ng-submit="ctrl.submitForm(ctrl.myForm.$valid)"
格式。
即使ng-required
设置为true
且未设置输入字段,valid
中的submitForm
也会返回true
。
我已经在ng-required="someValue"
上使用了这种技术数千次,但是没有像现在这样使用过功能,并且效果很好。我认为将ng-required
设置为ctrl.isAtLeasOneFieldSet()
时出现问题。看来该表单无法获取对required
的更新。
这里有一个模拟:
index.html-表单
<form name="ctrl.myForm" class="form-horizontal" role="form" data-ng-submit="ctrl.submitForm(ctrl.myForm.$valid)" novalidate>
<input name="name"
data-ng-model="data.name"
data-ng-required="{{ctrl.isAtLeasOneFieldSet()}}"
/>
<input name="surname"
data-ng-model="data.surname"
data-ng-required="{{ctrl.isAtLeasOneFieldSet()}}"
/>
<!---->
</form>
index.js-SubmitForm()
function submitForm(valid) {
if(!valid) {
return;
}
// Do something else
}
答案 0 :(得分:0)
在这种情况下,我发现了问题。虽然我不确定有什么区别。
右:data-ng-required="ctrl.isAtLeasOneFieldSet()"
错误:data-ng-required="{{ctrl.isAtLeasOneFieldSet()}}"
如果有人知道为什么会这样以及在每种情况下究竟会发生什么,请在此处写下答案。