我在我的项目中使用angularjs。我从后端获取日期字符串。日期字符串可以是任何字符串,可以是日期,也可以不是日期。当我将日期字符串设置为ng-model
时,如果它是一个日期字符串,那么它可以正常工作,否则会引发异常
Error: [ngModel:datefmt] http://errors.angularjs.org/1.4.3/ngModel/datefmt?p0=asdfdaf
at Error (native)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js:6:416
at Array.<anonymous> (http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js:167:250)
at Object.<anonymous> (http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js:264:75)
at n.$get.n.$digest (http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js:132:124)
at n.$get.n.$apply (http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js:135:269)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js:19:437
at Object.e [as invoke] (http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js:39:156)
at d (http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js:19:358)
at Ac (http://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js:20:151)
我不知道如何处理此异常。我正在考虑编写像isDate(dateString)
这样的方法,但我不知道我应该在里面写什么,因为日期字符串可以是任何格式的任何字符串。请帮忙,我创建了plunkr here
答案 0 :(得分:1)
当您的输入设置为键入日期时,angularJS将仅接受Javascript中的Date对象。
但是,当你的输入有一个类型=&#34; date&#34;时,chrome有一个特殊的功能可以正确呈现,但不是其他浏览器的情况。
解决方案是使用字符串...并将其转换为
答案 1 :(得分:1)
你可以有这样的自定义方法
function isValidDate(date) {
return !! (Object.prototype.toString.call(date) === "[object Date]" && +date);
}
角度网站中有错误说明
所有与日期相关的输入都需要模型 是一个Date对象。如果模型是其他东西,则会出现此错误 抛出。 Angular没有在此设置验证错误 这些错误会向用户显示,但错误的状态 是由不正确的应用程序逻辑引起的,而不是由用户引起的。
这意味着,如果你使用的是type =“date”,那么你的ng-model应该是Date对象或一些可以转换为Date对象的字符串值。