我正在尝试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中使用它,则它不起作用,适合使用此方法。
- 什么会弄乱我的
input[dates]
,所以我不能像预期的那样在控制器中设置值? - 为什么 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!!!!
...