所以我在下面有这段代码
<form name="registrationForm">
<div class="form-inline" ng-repeat="participant in participantsArray">
<div class="form-group">
<input ng-model="datas.name[$index+1]" name="name{{$index+1}}" required verify-name>
<span ng-if="registrationForm.name+($index+1).$dirty && registrationForm.name+($index+1).$invalid">error</span>
</div>
</div>
</form>
并且无法正常工作,如何在ng-if中使用$ index表达式? ng-model,名称正常......
答案 0 :(得分:5)
对于动态字段,您可以使用[]
来包装动态字符串字段。
registrationForm['name'+($index+1)].$dirty
参考以下示例:
angular.module("app", [])
.controller("myCtrl", function($scope) {
$scope.items = ['a','b','c','d'];
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<div ng-app="app" ng-controller="myCtrl">
<form name="registrationForm">
<div ng-repeat="item in items">
<input ng-model="datas.name[$index+1]" name="name{{$index+1}}" required verify-name>
<span ng-if="registrationForm['name'+($index+1)].$dirty && registrationForm['name'+($index+1)].$invalid">error</span>
</div>
</form>
</div>
答案 1 :(得分:2)
我曾遇到过同样的问题。您可以做的是使用括号表示法而不是dot(.)
表示法来访问表单控件。这对我有用。以下是一个例子。试试这个会起作用。如果您需要帮助,请告诉我们。
registrationForm['name'+($index+1)].$dirty
希望它有助于:)
答案 2 :(得分:1)
试试这个:)
<span ng-if="registrationForm['name'+($index+1)].$dirty && registrationForm.name+($index+1).$invalid">error</span>