有条件地将类添加到动态生成的字段中

时间:2014-09-25 11:31:01

标签: angularjs angularjs-ng-repeat ng-class

我正在使用ng-class指令进行某种验证,但是在开始处理ng-repeat创建的元素时会出现问题。

<div class="traveler" ng-repeat="i in getNumber(travelers_count) track by $index" style="margin-top: 15px">
                        <div class="inp-wr wr-traveler">
                            <input
                                ng-class="{ 'has-error' : valError && mainForm.last_name[{{$index + 1}}].$invalid}"
                                required
                                class="text-inp"
                                style="width: 200px"
                                ng-model="$parent.last_name[$index]"
                                ng-model-options="{ updateOn: 'blur' }"
                                ng-pattern="namePattern"
                                name="last_name[{{$index + 1}}]"
                                placeholder = "Last name">
                        </div>
</div>

有没有办法让这个工作? ng-class="{ 'has-error' : valError && mainForm.last_name[{{$index + 1}}].$invalid}"

2 个答案:

答案 0 :(得分:0)

您不需要括号。

mainForm.last_name[$index + 1].$invalid

答案 1 :(得分:0)

找到快速解决方案 - 需要在<ng-form>中包装输入并检查它的有效性。即

<div class="traveler" ng-repeat="i in getNumber(travelers_count) track by $index" style="margin-top: 15px">
                            <div class="inp-wr wr-traveler">
<ng-form name="lastNameForm">
                                <input
                                    ng-class="{ 'has-error' : valError && lastNameForm.$invalid}"
                                    required
                                    class="text-inp"
                                    style="width: 200px"
                                    ng-model="$parent.last_name[$index]"
                                    ng-model-options="{ updateOn: 'blur' }"
                                    ng-pattern="namePattern"
                                    name="last_name[{{$index + 1}}]"
                                    placeholder = "Last name">
</ng-form>
                            </div>
    </div>