带有ANGULAR date.now()的占位符日期在Chrome

时间:2016-02-08 11:46:42

标签: javascript jquery angularjs datetime angular-filters

在网络应用程序中,我有一个input type="date",我希望用户的当前日期已经默认。所以我使用了Angular,因为纯粹的js并没有在手机上工作(尽管在浏览器中工作)。所以这是 html 部分:

<body ng-app="app">    
<form ng-controller="DateController as dateCtrl"> 
<input type="date" id="date" value="{{value}}" ng-model="value" placeholder="dd-MM-yyyy">
</form>
</body>

这是 AngularJS 代码:

var app = angular.module('app', []);
 app.controller('DateController', ['$scope', '$filter', function($scope, $filter) {
$scope.value = $filter('date')(Date.now(), "dd-MM-yyyy"); 
}]); 

Firefox和Chrome都在控制台中出错。但是在Firefox中它可以工作,而在Chrome中它不起作用。 Chrome错误:

  

指定值&#39; {{value}}&#39;不符合要求   格式,&#39; yyyy-MM-dd&#39;。   angular.min-1.4.5.js:107错误:[ngModel:datefmt]   http://errors.angularjs.org/1.4.5/ngModel/datefmt?p0=08-02-2016       在错误(本机)       在file:///mypath/js/angular.min-1.4.5.js:6:416       在数组。 (文件:///mypath/js/angular.min-1.4.5.js:165:14)       在对象。 (文件:///mypath/js/angular.min-1.4.5.js:264:75)       at m。$ get.m. $ digest(file:///mypath/js/angular.min-1.4.5.js:129:480)       at m。$ get.m. $ apply(file:///mypath/js/angular.min-1.4.5.js:133:113)       在file:///mypath/js/angular.min-1.4.5.js:19:479       at Object.e [as invoke](file:///mypath/js/angular.min-1.4.5.js:39:96)       at d(file:///mypath/js/angular.min-1.4.5.js:19:400)       at yc(file:///mypath/js/angular.min-1.4.5.js:20:179)(匿名   功能)@ angular.min-1.4.5.js:107 $ get @   angular.min-1.4.5.js:80 $ get.m. $ digest @   angular.min-1.4.5.js:130 $ get.m. $ apply @   angular.min-1.4.5.js:133(匿名函数)@   angular.min-1.4.5.js:19e @ angular.min-1.4.5.js:39d @   angular.min-1.4.5.js:19yc @ angular.min-1.4.5.js:20Zd @   angular.min-1.4.5.js:19(匿名函数)@   angular.min-1.4.5.js:292m.Callbacks.j @   jquery.min.js:2m.Callbacks.k.fireWith @ jquery.min.js:2m.extend.ready   @jquery.min.js:2J @jquery.min.js:2 jquery.min.js:5

     

指定值&#39; 08-02-2016&#39;不符合要求的格式,   &#39; YYYY-MM-DD&#39;

3 个答案:

答案 0 :(得分:0)

由于日期格式问题而出现此错误。 您可以通过将日期值分配给范围变量来完成此操作 像这样:$ scope.value = new Date();

visit http://plnkr.co/edit/0WXlKM8xoBp4eBLovQ63?p=preview

答案 1 :(得分:0)

  • 首先,某些引擎不支持Date.now函数。 (作为 描述于 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now) 因此,您可以使用$scope.value= new Date();$scope.value= new Date(Date.now());
  • 其次,输入类型日期是我认为无法格式化的。它只是 采用系统默认值并将其应用于GUI。所以你只需要使用<input type="date" id="date" ng-model="value" placeholder="dd-MM-yyyy">

答案 2 :(得分:0)

不要使用输入类型日期,因为它不适用于firefox