【问题标题】:How to work with date type input to match both JSON format and date format in AngularJS如何使用日期类型输入来匹配 AngularJS 中的 JSON 格式和日期格式
【发布时间】:2016-06-26 17:42:12
【问题描述】:

我有 RESTfull 服务,可以生成和使用 JSON 对象

{
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">

因此,在表示当前值之前,我将其字符串值转换为日期:

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

输入产生的日期类似于 - 'Fri Mar 11 2016 14:36:29 GMT+0200 (FLE Standard Time)'。 服务无法识别此格式,应为“yyyy-MM-dd”格式。 为避免错误,我使用角度过滤器,如

student.admissionDate = $filter('date')($scope.student.admissionDate, "yyyy-MM-dd");

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

我该如何解决这个问题?应进行哪些更改以适应服务器格式 ('yyy-MM-dd') 和 &lt;input type="date"&gt; 中的角度验证

【问题讨论】:

标签: javascript html angularjs json date


【解决方案1】:

我认为您传递给filter 的值是一个字符串。在将其传递给过滤器之前,您需要执行new Date('the_date_string')

这可能行得通。

【讨论】:

  • 是的,我这样做了...但不分享 $scope.student.admissionDate = new Date(student.admissionDate);问题是 - AngularJS 在日期转换后进行“ng-date”验证并抛出错误。
  • 您可以发布您的代码的 JSFiddle 吗?这对调试更有帮助。
  • 如果您愿意让浏览器将其随机解析为 UTC、本地或 NaN,您可以使用 Date 构造函数来解析字符串。手动解析字符串。
  • @RobG ,抱歉.. 没找到你
猜你喜欢
  • 1970-01-01
  • 2020-07-10
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
  • 1970-01-01
相关资源
最近更新 更多