【发布时间】:2014-04-14 21:35:25
【问题描述】:
背景: 我目前正在开发一个带有标签的应用程序;我想列出验证失败的字段/部分,以指导用户在右侧选项卡中查找错误。
所以我尝试利用form.$error 这样做;但我还没有完全让它发挥作用。
如果在ng-repeat 中发生验证错误,例如:
<div ng-repeat="url in urls" ng-form="form">
<input name="inumber" required ng-model="url" />
<br />
</div>
空值导致form.$error 包含以下内容:
另一方面,如果验证错误发生在ng-repeat之外:
<input ng-model="name" name="iname" required="true" />
form.$error 对象包含以下内容:
{ "必需": [ {} ] }
然而,我希望得到以下结果:
{ “必需”:[ {'iname': {} } ] }
关于为什么缺少元素名称的任何想法?
可以在此处找到正在运行的 plunkr: http://plnkr.co/x6wQMp
【问题讨论】:
-
前几天我注意到了这一点。这对我来说没有意义,因为您可以检查
form.iname.$error并获得正确的值。我最终做的是使用form.$valid来检查有效性并启用提交按钮。 -
您好 Ed 非常感谢您的回复。我同意,但我想告诉用户哪个控件无法验证。该表单位于选项卡式视图中,因此很容易错过您无法保存的信息,因为您当前未查看的选项卡中的重复中存在验证错误。 (我希望我的解释足够好:))
-
是的,我同意向用户展示什么是有效的,什么是无效的。一种选择是您可以在
<span>标记中为每个可能的错误添加错误文本,例如使用ng-show="form.fieldName.$error.required"。然后,您可以将它们与输入内联,或者将它们放在提交按钮附近。不过这绝对不理想 - 我想知道未填充的$error值是否是有角度的错误? -
我相信 $error 被填充了,你不能把它作为 JSON 很好地转储。看这里:plnkr.co/edit/Z47J2W?p=preview 错误类型都可以迭代。
-
c0bra:谢谢,我会尝试按照您的解决方案,看起来它完全符合我的需要。
标签: angularjs angularjs-ng-repeat