myForm.$valid returns true 即使所需字段为空
myForm.$valid returns true even though required feld is empty
我有一个带有一些输入字段的表单 myForm
。
我要实现什么:每个字段 required
仅当至少一个其他输入字段不为空时。
我是怎么做的:我在每个字段上设置 ng-required="ctrl.isAtLeasOneFieldSet()"
。此函数检查是否设置了任何字段。
直到这里它起作用。如果我设置一个字段它 returns true
如果没有设置字段它 returns false
。我也在 Firefox 的 "developer-console-inspector" 中看到它,当我在其中一个输入字段中设置和取消设置值时,需要在 true 和 false 之间进行更改。
什么不起作用:我在我的控制器中有一个提交功能:
function submitForm(valid) {
if(!valid) {
return;
}
}
并在表格上 ng-submit="ctrl.submitForm(ctrl.myForm.$valid)"
。
即使 ng-required
设置为 true
并且未设置输入字段,submitForm
returns true
中的 valid
也是如此。
我已经在 ng-required="someValue"
中使用了这种技术数千次,但没有像现在这样使用 functionl,而且效果很好。我认为我设置 ng-required
和 ctrl.isAtLeasOneFieldSet()
时有问题。看起来表单不会更新到 required
.
这里是一个模拟:
index.html - form
<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
}
我在这个案例中发现了问题。虽然我不确定有什么区别。
右:data-ng-required="ctrl.isAtLeasOneFieldSet()"
错误:data-ng-required="{{ctrl.isAtLeasOneFieldSet()}}"
如果有人知道为什么会这样,以及在每种情况下究竟发生了什么,请在此处写下答案。
我有一个带有一些输入字段的表单 myForm
。
我要实现什么:每个字段 required
仅当至少一个其他输入字段不为空时。
我是怎么做的:我在每个字段上设置 ng-required="ctrl.isAtLeasOneFieldSet()"
。此函数检查是否设置了任何字段。
直到这里它起作用。如果我设置一个字段它 returns true
如果没有设置字段它 returns false
。我也在 Firefox 的 "developer-console-inspector" 中看到它,当我在其中一个输入字段中设置和取消设置值时,需要在 true 和 false 之间进行更改。
什么不起作用:我在我的控制器中有一个提交功能:
function submitForm(valid) {
if(!valid) {
return;
}
}
并在表格上 ng-submit="ctrl.submitForm(ctrl.myForm.$valid)"
。
即使 ng-required
设置为 true
并且未设置输入字段,submitForm
returns true
中的 valid
也是如此。
我已经在 ng-required="someValue"
中使用了这种技术数千次,但没有像现在这样使用 functionl,而且效果很好。我认为我设置 ng-required
和 ctrl.isAtLeasOneFieldSet()
时有问题。看起来表单不会更新到 required
.
这里是一个模拟:
index.html - form
<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
}
我在这个案例中发现了问题。虽然我不确定有什么区别。
右:data-ng-required="ctrl.isAtLeasOneFieldSet()"
错误:data-ng-required="{{ctrl.isAtLeasOneFieldSet()}}"
如果有人知道为什么会这样,以及在每种情况下究竟发生了什么,请在此处写下答案。