2015-01-07 5 views
0

이 코드가 어떻게 작동하는지 설명 할 수 있습니까?angularjs의 암호 확인 지시문

HTML 마크 업

<input type="password" ng-model="password" class="form-control" placeholder="Password" required> 
<input type="password" ng-model="confirm_password" class="form-control" placeholder="Password" required validate-equals="password"> 

지침 코드

angular.module('app') 
    .directive('validate', function() { 
    return { 
     require: "ngModel", 
     link: function postLink(scope, element, attrs, ngModelCtrl) { 
     function validate(value){ 
      var valid = (value === scope.$eval(attrs.validate)); 
      ngModelCtrl.$setValidtity('equal', valid); 
      return valid ? value : undefined; 
     } 

     ngModelCtrl.$parsers.push(validate); 
     ngModelCtrl.$formatters.push(validate); 

     $scope.$watch(attrs.validate, function(){ 
      ngModelCtrl.$setViewValue(ngModelCtrl.$viewvalue); 
     }) 
     } 
    }; 
    }); 

는 사람이 나에게 아래 questions을 설명 할 수 있습니다.

아래 코드는 directive에서 무엇을합니까?

$scope.watch(attrs.validate, function(){ 
    ngModelCtrl.$setViewValue(ngModelCtrl.$viewvalue); 
}); 

어떻게 valuevalidate() 함수에 전달됩니다?

답변

1

ngModelController의 문서를 확인하십시오. 이 지시자는 ngModel을 필요로하기 때문에 ngModelController를 링크 함수의 네 번째 인수로받습니다. 다른 질문에 관해서 :

  1. $scope.watch 호출 지시자가 작동되는 요소의 유효성 검사 속성에 watch을 설정 (정말 $scope.$watch이어야 함). validate 속성이 어떤 이유로 든 변경되면 (예 : 값이 변경되는 AngularJS 표현식에 바인딩 된 경우) 두 번째 매개 변수로 전달 된 함수가 실행됩니다. 이 함수는 파서로 등록 된 유효성 검사 함수를 다시 트리거하는 뷰 값을 재설정합니다.
  2. ngModelController 설명서에 따라 뷰 값이 첫 번째 파서 함수에 전달되고 해당 함수의 결과가 다음 파서로 전달됩니다. 마찬가지로 모델 값은 첫 번째 포맷터 함수로 전달되고 결과는 다음 포맷터로 전달됩니다.
관련 문제