前端之家收集整理的这篇文章主要介绍了
使用AngularJS的形式的动态验证和名称,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_
502_0@
我有这种形式:
http://jsfiddle.net/dfJeN/
如您所见,输入的名称值是静态设置的:
name="username"
,表单验证工作正常(添加东西并从输入中删除所有文本,文本必须出现)。
然后我尝试动态设置名称值:http://jsfiddle.net/jNWB8/
name="{input.name}"
然后我将其应用于我的验证
login.{{input.name}}.$error.required
(此模式将用于ng重复),但我的表单验证被打破。它在我的浏览器中正确解释(如果我检查我看到的元素login.username。$ error.required)。
任何想法 ?
编辑:在控制台中记录范围后,看起来
{{input.name}}
表达式不是内插。我的表单为{{input.name}}属性,但没有用户名。
更新:自从1.3.0-rc.3 name =“{{input.name}}”按预期工作。请参阅#1404
你不能做你想这样做。
假设你想要做的是你需要动态地添加元素到一个表单,如ng-repeat,你需要使用嵌套的ng-form来允许验证这些单独的项目:
<form name="outerForm">
<div ng-repeat="item in items">
<ng-form name="innerForm">
<input type="text" name="foo" ng-model="item.foo" />
<span ng-show="innerForm.foo.$error.required">required</span>
</ng-form>
</div>
<input type="submit" ng-disabled="outerForm.$invalid" />
</form>
可悲的是,它不是一个有据可查的Angular的特性。