Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2014
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. angular
  2.     .module('kalendae.kalendaeDirective', [])
  3.     .factory('kal', function ($window) {
  4.         return $window.Kalendae;
  5.     })
  6.     .directive('kalendae', function (kal, $parse) {
  7.         return {
  8.             restrict: 'A',
  9.             scope: {
  10.                 modelFrom: '=',
  11.                 modelTo: '=?',                
  12.             },
  13.             link: function (scope, element, attrs) {
  14.                 // -> Create Kalendae object, depending on the type of object
  15.                 var type       = attrs.kalendae === 'dropdown' ? kal.Input : kal;
  16.                 var datePicker = new type(element[0], {
  17.                     mode       : attrs.mode        || 'single',
  18.                     months     : attrs.months      || 1,
  19.                     weekStart  : attrs.weekStart   || 0,
  20.                     direction  : attrs.direction   || 'any',
  21.                     blackout   : attrs.blackout    || false,
  22.                     useYearNav : attrs.useYearNav  || true,
  23.                     format     : attrs.format      || 'X'
  24.                 });
  25.  
  26.                 // -> Watch our models for changes (if a date is selected)
  27.                 scope.$watchCollection('[modelFrom, modelTo]', function (newValues) {
  28.                     console.log(newValues);
  29.                 });
  30.  
  31.                 /**
  32.                  * Subscribe to the datePicker events & set the models accordingly
  33.                  * @param  {date} date The selected date object
  34.                  */
  35.                 datePicker.subscribe('change', function (date) {
  36.                     var selectedDates = datePicker.getSelectedRaw();
  37.  
  38.                     if (datePicker.settings.mode == 'single') {
  39.                         scope.$apply( function() {
  40.                            scope.modelFrom = selectedDates[0]; // <--- ERROR
  41.                         });
  42.  
  43.                         // When using the dropdown datepicker, hide after selecting a date.
  44.                         attrs.kalendae === 'dropdown' && element[0].blur();
  45.                     } else if (datePicker.settings.mode == 'range') {
  46.                         scope.modelFrom = selectedDates[0];
  47.  
  48.                         if (typeof selectedDates[1] != 'undefined') {
  49.                             scope.modelTo = selectedDates[1]; // <--- ERROR
  50.                            
  51.                             // When using the dropdown datepicker, hide after selecting a date.
  52.                             attrs.kalendae === 'dropdown' && element[0].blur();    
  53.                         }
  54.                     } else {
  55.                         console.log('Selecting date ranges not yet implemented in the directive, please do! :)');
  56.                     }                
  57.                 });
  58.             }
  59.         };
  60.     });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement