2016-09-15 2 views
1

У меня есть текст типа ввода с datePicker.Отформатировать начальное значение ng-модели (текст типа ввода с помощью datePicker)

<input id="start-date" style="width: 230px;" close-text="Close" 
type="text" ng-model="startDate" datepicker-popup="dd-MM-yyyy" 
ng-required="true"/></div> 

При отображении ввода я должен отобразить начальное значение для него. Проблема заключается в том, что это значение отображается в следующем формате:

Wed Jun 15 2016 10:48:49 GMT+0000 (WET)

это только после выбора даты из Datepicker, что я могу увидеть формат, который я хочу (ДД-ММ-ГГГГ). Чтобы решить эту проблему, я добавил:

$scope.$watch('startDate', function (newValue) { 
    $scope.startDate = $filter('date')(newValue, 'dd-MM-yyyy'); 
}); 

Но я получаю эту ошибку: Datepicker директиву: «нг-модель» значение должно быть дата объекта, количество миллисекунд, прошедших с 01.01.1970 или строка, представляющая RFC2822 или Дата ISO 8601.

Как я могу решить эту проблему?

Спасибо!

+0

в нг-модели? Например: 'ng-model =" startDate | date "'? –

+0

Вы используете AngularUI datepicker ?? – Rakeschand

ответ

0

Предполагая, что вы используете AngularUI DatePicker и ваше начальное значение для нг-модели не получает отформатирован просто добавив следующую директиву в ваш проект будет решить проблему:

directive('datepickerPopup', function(){ 
    return { 
    restrict: 'EAC', 
    require: 'ngModel', 
    link: function(scope, element, attr, controller) { 
     //remove the default formatter from the input directive to prevent conflict 
     controller.$formatters.shift(); 
    } 
    } 
}) 
+0

Благодарим за ответ, но у меня уже есть эта директива в файле ui-bootstrap-tpls.js, но у меня нет этого в нем 'controller. $ Formatters.shift();' –

+0

Можно ли добавить его в этот файл? –

+0

просто добавьте новый файл в качестве новой директивы, как и ваш контроллер. – Rakeschand