2017-03-01 64 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