我目前在表单验证和毫秒方面遇到问题。我猜测以毫秒为单位的时间不是有角度的有效日期格式,例如angular.isDate(1418645071000)
返回false。
但是我的代码中要改变什么,以便表单验证工作正常?我对服务器没有任何限制 - 意味着日期格式为#34;星期六03年03月00:00:00 GMT + 0100(CET)"也是可以接受的。
答案 0 :(得分:1)
我在stackoverflow https://stackoverflow.com/a/22658709/2012123
上找到了一个基于此线程的解决方案我将modelValue过滤为自定义日期格式。所以viewValue将采用格式' dd.Mm.yy'。
ngModelCtrl.$formatters.push(function(modelValue) {
if(modelValue) {
var filtered = $filter('date')(modelValue, 'dd.MM.yy');
return filtered;
}
});
使用以下代码,我立即将我的毫秒转换为有效日期
/*https://stackoverflow.com/questions/22639485/angularjs-how-to-change-the-value-of-ngmodel-in-custom-directive*/
// $parse works out how to get the value.
// This returns a function that returns the result of your ng-model expression.
var modelGetter = $parse(attrs['ngModel']);
console.log(modelGetter(scope));
var timeInMilliseconds = modelGetter(scope);
if(timeInMilliseconds != null) {
// This returns a function that lets us set the value of the ng-model binding expression:
var modelSetter = modelGetter.assign;
// This is how you can use it to set the value 'bar' on the given scope.
modelSetter(scope, new Date(timeInMilliseconds));
console.log(modelGetter(scope));
}
我已相应更新了http://plnkr.co/edit/lZZh5VvCzH6yYh1t8xVM?p=preview。现在没有更多的验证错误。
答案 1 :(得分:0)
angular.isDate检查提供的参数是否为日期类型的对象。
您首先需要使用new Date(milliseconds)