2015-02-07 4 views
1

Я пытаюсь определить input[date] контроль начального значения в контроллере.Измените параметр AngularJS [date] программно

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

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

Они обеспечивают рабочий пример того, как инициализировать в input[date] в контроллере (наклеен simplified version), который работает на 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' 

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

В Set default value of HTML5 date input field with angularJS предложен альтернативный метод:

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

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

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

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

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

это странно. Угловой использует 'return toString.call (значение) === '[object Date]';' для проверки объекта Date, вы должны работать. Можете ли вы отладить в Angular, чтобы понять, почему он не работает в вашей кодовой базе? – Rebornix

+0

AngularJS версия? – tasseKATT

+0

Версия AngularJS: 1.2.28 –

ответ

0

Угловой 1.2.x не поддерживает вход [дата].

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

 Смежные вопросы

  • Нет связанных вопросов^_^