Проверить динамические входы в директиве angularjs

Я пытаюсь проверить несколько входных данных, динамически генерируемых счетчиком. Проблема в том, что при вызове функции, которая проверяет, верна она или нет (с помощью ui-validate), кажется, что она взяла только одно значение и применила его ко всем сразу. Я не знаю, что происходит, я нуб? Как я могу это решить?

Вот мой html-код:

<div ng-repeat="(index) in countIterator track by index" ng-model="countIterator">
  <div class="form-group col-sm-6" ng-class="{'has-error': !validProduct}" 
       title="Product{{index + 1}}">
    <label for="dataProduct{{index + 1}}" class="control-label required">Products</label>
    <input name="dataProduct{{index + 1}}" type="number" min="0"
           class="form-control" ng-model="data[index].product" required 
           ui-validate=" 'validators.validateProducts($value, index+1)' " />
    <div ng-show="!validProduct" class="error">there's an error</div> 
  </div>
</div>

А вот код моей директивы angularjs:

angular.module('app.pages.mypage')
.directive('productsDetails', function($compile) {
    return {
        scope: {
            dataProduct: '=ngModel',
            required: '=ngRequired'
        },
        templateUrl: 'app/pages/mypage/directives/products.html',
        replace: true,
        controller: function($scope, $rootScope, $http, url) {

            $scope.validators = {
              validateProducts: function(value, indexNumber) {
                $scope.validProduct = false;
                if((typeof value !== 'undefined') && (value !== '')) {
                  if (indexNumber === 1) {
                    $scope.validProduct = true
                  } if (indexNumber === 2) {
                    $scope.validProduct = true
                  } if (indexNumber === 3) {
                    $scope.validProduct = true
                  }
                  return $scope.validProduct;
                } 
                else {
                  if (indexNumber === 1) {
                    $scope.validProduct = false
                  } if (indexNumber === 2) {
                    $scope.validProduct = false
                  } if (indexNumber === 3) {
                    $scope.validProduct = false
                  }
                  return $scope.validProduct;
                }
              }
            };
        }
    }

0 ответов

Другие вопросы по тегам