0

Я написал директиву для ui.bootstrap.datepicker. (http://angular-ui.github.io/bootstrap/) Он работает хорошо, но он не анализирует объект даты обратно на элемент управления, вероятно, после того, как выбрана дата. Формат даты не применяется после выбора даты.Parsing ui.bootstrap.datepicker object

Формат даты не применяется. enter image description here

Формат даты применяется (я хочу, чтобы это) enter image description here

Когда я отладки, я могу видеть два разных объекта.

  1. "Чт 28 августа 2014 8:00:00 GMT + 0800 (W. Australia Standard Time)"
  2. "2014-08-28T00: 00: 00"

Любая идея?

app.directive('reusablePicker', function ($compile) { 

var template = 
    '  <div class="input-group">'+ 
    '    <input type="text" class="form-control datepicker" datepicker-popup="dd-MMMM-yyyy" ng-model="pickerDate" is-open="dateOpened" ng-focus="dateOpen($event)" close-text="Close" ng-disabled="disabled" />' + 
    '    <div class="input-group-addon" ng-click="dateOpen($event)" ' + 
    '     <a href="#"><i class="linecons-calendar"></i></a>'+ 
    '    </div>' + 
    '   </div>'; 

var linker = function (scope, element, attrs, ngModelCtrl) { 
    scope.disabled = attrs.ngDisabled; 

    ngModelCtrl.$render = function() { 
     scope.pickerDate = ngModelCtrl.$viewValue; 
    }; 

    scope.$watch('pickerDate', function() { 
     ngModelCtrl.$setViewValue(scope.pickerDate); 
    }); 

    element.html(template).show(); 
    $compile(element.contents())(scope); 
};      

return {    
    require: 'ngModel', 
    link: linker, 
    replace: true, 
    restrict: 'EA', 
    scope: {}, 
    controller: ['$scope', function ($scope) { 

     $scope.dateOpen = function ($event) { 
      if ($scope.disabled !== "true") { 
       $event.preventDefault(); 
       $event.stopPropagation(); 
       $scope.dateOpened = true; 
      } 
     }; 

    }]     
};      

});

+0

Я нашел, если я обновить отдельные модели даты, как показано ниже, то он работает новой Даты (role.pickerDate) .toISOString(), но это плохо – ove

+0

мне нравится делать что-то в директиве, но она бросает исключение , – ove

+0

я закончил делать это ngModelCtrl $ parsers.push (функция() {modelValue дата вар = новая дата (modelValue) .toISOString(); дата возврата; }). в директиве, но не знаю, должен ли я делать это – ove

ответ

0
ngModelCtrl.$parsers.push(function (modelValue) { 

     var date = new Date(modelValue).toISOString(); 
     return date; 
    });