Я пытаюсь обновить с Angular 1.2 до 1.4. Я столкнулся с проблемой с моими вводами данных, так как Angular теперь требует, чтобы значение было объектом Date вместо строки. Я смог решить это, создав директиву, которая преобразует строковое значение в объект Date. Это отлично работает в Chrome, однако, когда я открываю форму для редактирования в браузере, не совместимом с HTML5, дата не отображается. В соответствии с документацией «Угловая» ниже мое значение должно отображаться до тех пор, пока оно находится в формате ISO.AngularJS: ввод только даты отображается в Chrome
В браузерах, которые еще не поддерживают ввод даты HTML5, будет использоваться текстовый элемент. В этом случае текст должен быть введен в допустимом ISO-8601 формата даты (ГГГГ-ММ-ДД), например: 2009-01-06 (https://docs.angularjs.org/api/ng/input/input%5Bdate%5D)
Это моя директива, которая работает отлично подходит для Chrome
.directive('formatDate', ->
require: 'ngModel'
link: (scope, elem, attr, modelCtrl) ->
modelCtrl.$formatters.push((modelValue) ->
new Date(modelValue + "CST"))
)
пытался использовать это в моей директиве вместо этого, но это, кажется, возвращает строку вместо даты так угловой выдает ошибку
$filter('date')(modelValue, 'yyyy-MM-dd')
в моем HTML я пытался использовать нг-инициализацию для инициализировать значение для формы как sug в этом thread, однако это тоже не сработало.
<input class="form-control" type="date" ng-init="params.effective_date=(params.effective_date | date:'yyyy-MM-dd')" ng-model="params.effective_date" format-date />
Любая помощь будет оценена по достоинству, так как я пока не смог найти способ решить эту проблему.