lemming
8/20/2013 - 7:10 AM

gistfile1.js

'use strict';

angular.module('saSchedulerApp.directives')
.directive('pickadate', [function () {
    return {
        require: '?ngModel',
        link: function (scope, elm, attrs, ngModel) {
            var pickadateOptions = { format: 'dd.mm.yyyy' };

            if (!ngModel) {
                $(elm).pickadate(pickadateOptions);
                return;
            }

            pickadateOptions.onSet = function(event) {
                var date = null;
                if (event.select) {
                    date = new Date(event.select).toISOString();
                }

                var phase = scope.$root.$$phase;
                if (!~['$apply', '$digest'].indexOf(phase)) {
                    scope.$apply(function() {
                        ngModel.$setViewValue(date);
                    });
                }
            };

            var $input = $(elm).pickadate(pickadateOptions),
                picker = $input.pickadate('picker');

            ngModel.$render = function() {
                picker.set('select', new Date(ngModel.$viewValue));
            }
        }
    };
}]);