背景:
我目前正在开发一个带有选项卡的应用程序;我想列出验证失败的字段/部分,以引导用户在右侧选项卡中查找错误。
所以我尝试利用form.$error
这样做;但我还没有完全让它发挥作用。
如果验证错误发生在ng-repeat
, e.g.:
<div ng-repeat="url in urls" ng-form="form">
<input name="inumber" required ng-model="url" />
<br />
</div>
空值会导致form.$error
包含以下内容:
{ "required": [
{
"inumber": {}
},
{
"inumber": {}
}
] }
另一方面,如果验证错误发生在此之外ng-repeat
:
<input ng-model="name" name="iname" required="true" />
The form.$error
对象包含以下内容:
{ "required": [ {} ] }
然而,我期望以下内容:
{ "required": [ {'iname': {} } ] }
关于为什么缺少元素名称有什么想法吗?
可以在这里找到正在运行的 plunkr:http://plnkr.co/x6wQMp http://plnkr.co/x6wQMp
As @c0bra https://stackoverflow.com/users/888165/c0bra在评论中指出form.$error
对象已填充,它只是不喜欢被转储为 JSON。
循环遍历form.$errors
然而,它的嵌套对象将获得所需的结果。
<ul>
<li ng-repeat="(key, errors) in form.$error track by $index"> <strong>{{ key }}</strong> errors
<ul>
<li ng-repeat="e in errors">{{ e.$name }} has an error: <strong>{{ key }}</strong>.</li>
</ul>
</li>
</ul>
所有的功劳都归于c0bra https://stackoverflow.com/users/888165/c0bra关于这一点。
另一种选择是使用以下解决方案之一这个问题 https://stackoverflow.com/questions/12044277/how-to-validate-inputs-dynamically-created-using-ng-repeat-ng-show-angular/24470458#24470458为动态创建的输入分配唯一的名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)