2015-09-02 3 views
0

У меня есть два поля: поле пароля и поле подтверждения пароля.Смотреть другое значение модели в угловой директиве

В соответствии с бизнес-требованиями несоответствие пароля может отображаться только в поле подтверждения пароля в определенные моменты времени, если в это время пароли не совпадают.

Я решил, что лучший способ сделать это создать директиву подтверждения пароля:

.directive('confirmPasswordDirective', 
['$timeout', 
function($timeout){ 
    return { 
    restrict: 'A', 
    require: 'ngModel', 
    link: function($scope, $element, $attrs, ngModel){ 
     var getPassword = function(){//function to get password field value 
     return $scope.$eval($attrs.password); 
     }; 
    //      below is undefined 
    $scope.$watch([$attrs, $scope.$eval($attrs.password)], function(){ 
     ngModel.$validators.confirmPassword = function(){ 
     //watch ngModel here 
     }; 
    }); 
    } 
} 
}]) 

я могу получить значение модели пароля от GetPassword() функции, но я не могу просто смотреть модель значение пароля из этой директивы и срок действия теста на основе его значения.

Любая идея, как это сделать?

+0

Вы пытаетесь смотреть массив. Он будет работать только при изменении длины массива. Используйте '$ watchCollection' или' $ watch' с третьим аргументом 'true'. – user3335966

ответ

2

Если вы wanto функцию обратного вызова, которая будет вызываться каждый раз, когда меняется пароль, что uou должны смотреть является функция GetPassword:

$scope.$watch(getPassword, function(){ 
    ... 
}); 

Я не вижу причин, чтобы пересмотреть confirmPassword валидатор каждый раз, когда меняется пароль, хотя , То, что должен сделать обратный вызов, - это просто проверять поле каждый раз, когда изменяется пароль. Валидатор должен быть определен и добавлен один раз.

+0

А я понимаю, что вы говорите, поставив функцию валидатора в функцию часов, которая переопределяет функцию каждый раз, когда изменяется значение? – northsideknight

+0

Да, вот и все. –

+0

Работал! Благодаря! – northsideknight

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