Skip to content

Instantly share code, notes, and snippets.

@passalini
Created July 14, 2014 19:51
Show Gist options
  • Save passalini/5bfd8190443d22b9c29f to your computer and use it in GitHub Desktop.
Save passalini/5bfd8190443d22b9c29f to your computer and use it in GitHub Desktop.
check passwords with angularjs's directive
.directive('equals', function() {
return {
restrict: 'A', // only activate on element attribute
require: '?ngModel', // get a hold of NgModelController
link: function(scope, elem, attrs, ngModel) {
if(!ngModel) return; // do nothing if no ng-model
// watch own value and re-validate on change
scope.$watch(attrs.ngModel, function() {
validate();
});
// observe the other value and re-validate on change
attrs.$observe('equals', function (val) {
validate();
});
var validate = function() {
// values
var val1 = ngModel.$viewValue;
var val2 = attrs.equals;
// set validity
ngModel.$setValidity('equals', val1 === val2);
};
}
}
});
<input ng-model="user.password" />
<input ng-model="user.confirmation" equals="{{ user.password }}" />
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment