2017-03-01 83 views
0

我想验证一个角度表单输入,并给它一个类,如果不是$ valid,问题是,它在ng-repeat内循环一个int数组,并且输入名称是基于$指数:

<li ng-repeat="item in selectedItem.data.ax_ch"> 
    <div ng-class="{'has-error':!form.ax_$index.$valid}"> 
    <input type="text" id="ax_{{$index}}" name="ax_{{$index}}" ng-model="item" required=""/> 
    </div> 
</li> 

一切都被在输出$指数,但纳克级:

<li ng-repeat="item in selectedItem.data.ax_ch"> 
    <div ng-class="{'has-error':!form.ax_$index.$valid}"> 
    <input type="text" id="ax_0" name="ax_0" ng-model="item" required=""/> 
    </div> 
</li> 

我希望什么它是:

<li ng-repeat="item in selectedItem.data.ax_ch"> 
    <div ng-class="{'has-error':!form.ax_0.$valid}"> 
    <input type="text" id="ax_0" name="ax_0" ng-model="item" required=""/> 
    </div> 
</li> 

我已经搜索过,人们也有类似的问题,但目前为止他们都没有解决。有没有角度超级英雄主加高级谁可以帮助我:)?

回答

3

因为您正在动态构建form上的财产/密钥,所以您会在普通的Javascript中执行相同的操作:使用square["bracket"]表示法。

您的标记更改为:

<li ng-repeat="item in selectedItem.data.ax_ch"> 
    <div ng-class="{'has-error':!form['ax_' + $index].$valid}"> 
    <input type="text" id="ax_{{$index}}" name="ax_{{$index}}" ng-model="item" required=""/> 
    </div> 
</li> 
+1

OMG!哈哈现在感觉有点尴尬!谢谢GregL!你摇滚! –

+0

从上面看来,答案表单就像它里面的所有元素的数组一样。 – MukulSharma

+0

@MukulSharma不是很好,但是当使用'ng-model'指令的输入具有'name'属性时,表单对象上的属性被添加到'name'属性。同样,如果'form'元素有一个'name',它将作为该名称在该范围上发布。因此,为什么在这段代码中,你可以执行'$ scope.form.ax_1'。 – GregL