以编程方式更改AngularJS输入[日期]
问题描述:
我试图在控制器中分配一个input[date]
控件的初始值。以编程方式更改AngularJS输入[日期]
从AngularJS input[date]
文档,
模型必须始终为Date对象,否则角将抛出 错误。
他们提供了如何在控制器(粘贴在simplified version),上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'
和控制不inititlized。似乎它期待ISO格式的字符串,而不是有效的日期对象。
在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 “YYY-MM-DD” 串到模型中。根据文档,这应该会引发错误,因为字符串不是有效的日期对象,但是这第二种方法适用于我,但很有趣,如果您在修改后的原始文件Plunker中使用它,则不适用。
- 什么可以搞乱我的
input[dates]
,所以我不能设置 控制器中的值作为spected? - 为什么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!!!!
...
答
Angular 1.2.x不支持输入[日期]。
更新到1.3.13解决了问题。
实际上很奇怪。 Angular使用'return toString.call(value)==='[object Date]';'为了验证一个Date对象,你的情况应该起作用。你可以调试到Angular看看为什么它在代码库中失败了吗? – Rebornix 2015-02-07 12:48:00
AngularJS版本? – tasseKATT 2015-02-08 16:06:27
AngularJS版本:1.2.28 – 2015-02-09 18:08:25