Angularjs形成没有名称的验证输入字段

时间:2014-05-10 11:12:21

标签: forms angularjs validation

如何在不使用字段名称或字段名称作为数组的情况下跟踪表单中的输入字段验证,例如用户[USER_NAME]?

示例代码:

<div ng-class="{ 'has-error' : saveUserForm.user[first_name].$invalid && !saveUserForm.user[first_name].$pristine }">
   <input type="text" value="{{userAttr.first_name}}" required ng-model="userAttr.first_name" name="user[first_name]" id="inputFirstName">
</div>

使用数组名称&#34;用户[first_name]&#34;表单字段不起作用,我不能将其更改为简单的名称,如&#34; firstName&#34;。

我可以使用字段的id&#34; inputFirstName&#34;这里:saveUserForm.inputFirstName。$ invalid?

1 个答案:

答案 0 :(得分:1)

name属性是必需的*,但Angular对名称并不讳见。如果名称为user[first_name],则可以正确引用。

假设这样的名字:name="user[first_name]"
您应该像这样引用它:saveUserForm['user[first_name]'].$...

E.g。

<div ng-class="{'has-error':saveUserForm['user[first_name]'].$invalid&&
                            !saveUserForm['user[first_name]'].$pristine}">

另请参阅此 short demo


一点解释:
在JavaScript中saveUserForm.user[first_name] 相当于a[b] 其中a = saveUserForm.userb = first_name


<子> *:您可以通过创建自定义指令,获取父表单FormController并使用其 $addControl() <添加元素来避免使用任何名称。 / strong>方法,但确实没有必要。