2015-01-22 4 views
0

Я пытаюсь интегрировать простую проверку проверки пароля с помощью углового. По какой-то причине независимо от того, что я делаю ngModel. $ Validate() не определен, и, таким образом, проверка действительности не выполняется. Любая помощь очень полезна. У меня есть собственный контроллер:

angular.module('todo') 
    .controller('RegisterController', ['$scope', '$http', '$location', function($scope, $http, $location) { 
     $scope.register = function() { 
    }); 

Я получил маршрутизатор:

.config(function($routeProvider) { 
    $routeProvider. 
     when('/todo', { 
      templateUrl: './partials/todo.html', 
      controller: 'TodoController' 
     }). 
     when('/register', { 
      templateUrl: './partials/register.html', 
      controller: 'RegisterController' 
     }). 
     otherwise({ 
      redirectTo: '/todo' 
     }); 
}); 

И я получил директиву:

var compareTo = function() { 
    return { 
     require: "ngModel", 
     scope: { 
      otherModelValue: "=compareTo" 
     }, 
     link: function(scope, element, attributes, ngModel) { 
      ngModel.$validators.compareTo = function(modelValue) { 
       return modelValue == scope.otherModelValue; 
      }; 

      scope.$watch("otherModelValue", function() { 
       console.log('in otherModelValue '); 
       console.log('ngModel.$validate() : ' + ngModel.$validate()); 
       ngModel.$validate(); 
      }); 
     } 
    }; 
}; 
angular.module('todo').directive("compareTo", compareTo); 

я связать все это вместе в следующем порядке:

<input id="password" name="password" type="password" placeholder="Password" ng-model="password" required/> <br/> 
    <input id="passwordConfirm" type="password" placeholder="Repeat Password" ng-model="confirmPassword" required compare-to="password" /> <br/> 
+1

Я считаю/думаю, что вы на самом деле сообщают, что ngModel $ Validate. - функция, а не возвращаемое значение, была не определена. Вы нашли решение? –

+0

Как вы решили эту проблему? – Ankita

ответ

0

ngModel.$validate() должен быть не определен по дизайну, поскольку он не возвращает никакого конкретного значения. Вы уверены, что ваша проверка не работает, но не имеет способа показать эту проверку? Попробуйте добавить в шаблон (если ваша форма имеет name="form"):

<span ng-show="form.confirmPassword.$error.compareTo">Passwords must match</span>

Также добавьте name атрибут confirmPassword в поле confirmPassword

Смежные вопросы