1

我正在尝试input[date]在控制器中为控件分配初始值。

从 AngularJSinput[date]文档中,

模型必须始终是 Date 对象,否则 Angular 会抛出错误。

他们提供了一个工作示例,说明如何在 Plunker 上运行input[date]控制器(粘贴简化版本)。

<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 格式的字符串,而不是一个有效的日期对象。

使用 angularJS 设置 HTML5 日期输入字段的默认值中,提出了一种替代方法:

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

它只是为模型分配一个“yyy-MM-dd”字符串。根据文档,这应该会引发错误,因为字符串不是有效的日期对象,但是第二种方法对我有用,但有趣的是,如果您在修改后的原始Plunker中使用它,则它不起作用,适合使用此方法。

  1. 什么会弄乱我的input[dates],所以我不能像预期的那样在控制器中设置值?
  2. 为什么 alt 方法对我(和其他人)有效,但在提供的简单演示中无效?

以下是我的代码的一些摘录,其中创建了 input[type] 并为其分配了初始值:

索引.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!!!!
    ...
4

1 回答 1

0

Angular 1.2.x 不支持输入[日期]。

更新到 1.3.13 解决了这个问题。

于 2015-02-14T15:15:34.230 回答