Измените ввод AngularJS [дата] программно

Я пытаюсь input[date] контролировать начальное значение в контроллере.

От AngularJS input[date] документация,

Модель всегда должна быть объектом Date, в противном случае Angular выдаст ошибку.

Они предоставляют рабочий пример того, как начать input[date] в контроллере (вставил упрощенную версию), который работает на Plunker.

<script>
   angular.module('dateInputExample', [])
     .controller('DateController', ['$scope', function($scope) {
       $scope.value = new Date(2013, 9, 22);
     }]);
</script>
<form name="myForm" ng-controller="DateController as dateCtrl">
   <input type="date" id="exampleInput" name="input" ng-model="value" />
</form>

Когда я делаю то же самое в своем приложении, я всегда получаю следующее сообщение:

The specified value 'Sun Nov 09 2014 00:00:00 GMT+0100 (CET)' does not conform to the required format, 'yyyy-MM-dd'

и контроль не инициализируется. Кажется, что он ожидает строку в формате ISO, а не допустимый объект даты.

В поле Задать значение по умолчанию для поля ввода даты HTML5 с помощью angularJS предлагается альтернативный метод:

<input type="date" ng-model="date" value="{{date}}">
...
$scope.date = $filter("date")(Date.now(), 'yyyy-MM-dd');

Он просто присваивает модели "yyy-MM-dd" строку. Согласно документации это должно привести к ошибке, так как строка не является допустимым объектом Date, но этот второй метод работает для меня, но забавно, не работает, если вы используете его в модифицированном оригинальном Plunker, адаптированном для использования этого метода.

  1. Что может мешать моему input[dates] поэтому я не могу установить значение в контроллере, как указано?
  2. Почему метод alt работает для меня (и других), но не работает в простой демонстрационной версии?

Вот некоторые выдержки из моего кода, где создается ввод [тип] и где ему присваивается начальное значение:

index.html

<input type="date" name="input", ng-model="value" />

контроллер

.controller("UploadsCtrl",["$scope","$filter", function($scope, $filter) {
    // $scope.value = new Date(2013, 22, 9); // Not working
    $scope.value = "2015-10-10"; // Working!!!!
    ...

1 ответ

Angular 1.2.x не поддерживает ввод [дата].

Обновление до 1.3.13 решает проблему.

Другие вопросы по тегам