如何使用日期类型输入来匹配AngularJS中的JSON格式和日期格式

时间:2016-03-11 12:57:39

标签: javascript html angularjs json date

我有生成和使用JSON对象的RESTfull服务

{
firstName: "Alex",
lastName: "Ross",
studentGroup: {
groupId: 1,
groupName: "java 15-1"
},
admissionDate: "2015-03-25",
status: {
statusId: 3,
statusName: "expelled"
},
term: {
termId: 4,
termName: "fourth"
},
id: 1
}

这是 admissionDate 字段,它对应于html页面上的type =“date”的输入(更新对象的页面服务...所以它应该显示当前值并从日期选择器提交新的一个RESTfull服务):

<input required type="date" ng-model="student.admissionDate">

因此,在表示当前值之前,我将其String值转换为date:

$scope.student.admissionDate = new Date(student.admissionDate); 

输入产生的日期类似于 - ' 2016年3月11日星期五14:36:29 GMT + 0200(FLE标准时间)'。 但是服务无法识别此格式,预计为' yyyy-MM-dd '格式。 为避免错误,我使用像

这样的角度滤镜
student.admissionDate = $filter('date')($scope.student.admissionDate, "yyyy-MM-dd");

对象也可以发送到服务器(PUT: /student)但在Chrome开发者控制台中我可以观察到错误 - “[ngModel:datefmt]”,因为<input>标记中的值格式已更改。

Chrome console with Angular validation error

我该如何解决这个问题?应对'yyy-MM-dd'

中的服务器格式(<input type="date">)和角度验证进行哪些更改

1 个答案:

答案 0 :(得分:1)

我认为您传递给<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="myapp" ng-controller="Ctrl as vm"> <button ng-click="vm.addFadeClass((animate = !animate))" class="btn btn-default">Fade</button> <button ng-click="vm.addFlipClass((animate = !animate))" class="btn btn-default">Flip</button> <div class="animated-wrapper"> <h1 class="text-center animated" ng-class="vm.cssVal" >Animation</h1> </div> </div>的值是一个字符串。在将其传递给过滤器之前,您需要执行filter

这可能有效。