Я использую angularjs, угловой bootstap (this one) и их datepicker для ввода даты.Angular bootstrap datepicker и ручной ввод даты
<input type="text" datepicker-popup="dd.mm.yyyy" ng-model="dt" datepicker-options="dateOptions" ng-required="true">
Я хочу, чтобы иметь возможность изменить дату, выбранную datepicker вручную. Например, я выбрал 07.09.2013 в datepicker, и я хочу изменить его на 07.09.2012. Чтобы сделать это, я нажимаю на свой вход и нажимаю backspace, чтобы удалить последнюю цифру 3 и поставлю туда 2. Проблема в том, что когда я это делаю, моя ng-модель становится строкой из объекта Date, а datepicker не получает новую дату. Вы можете попробовать сделать это на странице угловой загрузки (используя firefox).
Я понимаю, что это нормальное поведение из-за текста типа ввода, который указывает браузеру, что пользователь может поместить туда любой текст, который он хочет, и директиву ng-model, потому что так оно и работает. Но есть ли обходной путь для этой проблемы? Я подумал, что мне нужно контролировать мою ng-модель, используя ng-change или $ watch и преобразовать ее в объект Date, используя библиотеки, упомянутые here (я не могу использовать Date.parse(), потому что мой формат даты недействителен для этой функции).
Вопрос: есть ли какое-либо другое решение этой проблемы? Любые конфиг-флаги или что-то угловое?