AngularJs Datepicker Directive

AngularJS actually provides a special controller for interacting with thatngModel you can use inside your directives; just add torequire: 'ngModel' your function your directive definition.This gives you a fourth your function parameter to,link which is the controller you asked for in require–in this case, an instance of ngModelController. It has a method called $setViewValueyou can use to set the value of the model:

app.directive('datepicker', function() {
  return {
    require: 'ngModel',
    link: function(scope, el, attr, ngModel) {
      $(el).datepicker({
        onSelect: function(dateText) {
          scope.$apply(function() {
            ngModel.$setViewValue(dateText);
          });
        }
      });
    }
  };
});

The beautiful thing about ngModelController is it automatically takes care of validation and formatting (in the case of a specific input type) and integration with things like ngChange callbacks; check out this example: http://jsbin.com/ufoqan/6/edit

Add a Comment

Your email address will not be published. Required fields are marked *