如何在ng-if

时间:2017-08-10 08:48:30

标签: javascript html angularjs

所以我在下面有这段代码

<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,名称正常......

3 个答案:

答案 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>