Angular error:datefmt
<input type="date" ng-model="date">
$scope.date = "2014-12-24";
在angular
中故意将input type=date
类型的ng-model
限制为Date
类型。如果ng-model不为Date类型就会出现以下错误。
Error: error:datefmt
Model is not a date object
第一种解决方法是将ng-model
的值转换为Date
类型。
$scope.date = new Date("2014-12-24");
第二种方法通过设置NgModelController $formatters
自动将ng-model
的值转换为Date
类型。
angular.module('app')
.directive('formatDate', function(){
return {
require: 'ngModel',
link: function(scope, elem, attr, ngModelCtrl) {
ngModelCtrl.$formatters.push(function(modelValue){
if(modelValue) {
return new Date(modelValue);
}
});
ngModelCtrl.$parsers.push(function(value){
if(value) {
return $filter('date')(value, 'yyyy-MM-dd');
}
});
}
};
});
<input type="date" ng-model="date" format-date>
通过NgModelController.$formaters
可以格式化input
输入。例如自动将输入转换为大写、自动删除空格等等。