观察角度指令

时间:2015-09-02 21:49:04

标签: angularjs

我有两个字段:密码字段和确认密码字段。

根据业务要求,只有在密码不匹配的情况下,才能在特定时间从确认密码字段显示密码不匹配。

我已经决定最好的方法是创建一个确认密码指令:

.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()函数中获取密码模型值,但我似乎无法简单地从该指令中查看密码的模型值,并根据其值测试有效性。

知道怎么做吗?

1 个答案:

答案 0 :(得分:2)

如果你想在每次密码更改时调用回调函数,你必须注意的是getPassword函数:

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

我认为没有理由在每次密码更改时重新定义confirmPassword验证器。回调应该做的只是在每次密码更改时验证字段。验证器应该定义并添加一次。