-
-
Save mwadams/3a950170ec0636fa1036 to your computer and use it in GitHub Desktop.
| 'use strict'; | |
| angular | |
| .module('datetimepicker', []) | |
| .provider('datetimepicker', function () { | |
| var default_options = {}; | |
| this.setOptions = function (options) { | |
| default_options = options; | |
| }; | |
| this.$get = function () { | |
| return { | |
| getOptions: function () { | |
| return default_options; | |
| } | |
| }; | |
| }; | |
| }) | |
| .directive('datetimepicker', [ | |
| '$timeout', | |
| 'datetimepicker', | |
| function ($timeout, | |
| datetimepicker) { | |
| var default_options = datetimepicker.getOptions(); | |
| return { | |
| require: '?ngModel', | |
| restrict: 'AE', | |
| scope: { | |
| datetimepickerOptions: '@' | |
| }, | |
| link: function ($scope, $element, $attrs, controller) { | |
| var passed_in_options = $scope.$eval($attrs.datetimepickerOptions); | |
| var options = jQuery.extend({}, default_options, passed_in_options); | |
| $element.on('dp.change', function (ev) { | |
| $timeout(function () { | |
| var dtp = $element.data("DateTimePicker"); | |
| controller.$setViewValue(dtp.date()); | |
| }); | |
| }); | |
| function setPickerValue() { | |
| var result = null; | |
| if (!!controller && !!controller.$viewValue) { | |
| result = controller.$viewValue; | |
| } | |
| var dtp = $element.data("DateTimePicker"); | |
| dtp.date(result); | |
| } | |
| controller.$render = function (value) { | |
| setPickerValue(); | |
| }; | |
| $element.datetimepicker(options); | |
| setPickerValue(); | |
| } | |
| }; | |
| } | |
| ]); |
Great solution, why dont you pull request to https://github.com/diosney/angular-bootstrap-datetimepicker-directive?
Thanks! This is the only directive I've found that accepts two-way binding. Works Great!
Thanks for the efforts with this. Perhaps I've misunderstood something but if you change the format to MM/YYYY it displays correctly but the variable contains a full time stamp. My testing shows, for instance, when I set the picker to August 2016 the display shows 08/2016 correctly but the ng-model value contains 2016-07-31T23:00:00.000Z" which does not match the picked value.
Have attempted to fix myself but being a bit of an Anuglar newb I'm struggling. If anyone has any thoughts they'd be greatly received!
Got it. I think...
CHANGE:
controller.$setViewValue(dtp.date());
To:
controller.$setViewValue(dtp.date().format(options.format));
Thanks! Works Great!
I'm getting TypeError: $element.datetimepicker is not a function at line 59,
I do have an $element var, so angular is finding it on the dom, the function just isn't attached.
Thoughts?
it appears loaded in my index.html