我正在开发一个用ASP.NET WebAPI和Angular编写的应用程序。对于我从WebAPI获得的JSON日期,除了之外,其他一切都很有效,看起来像/Date(1402034400000)/
。 Angular不知道如何处理这个字符串。如果我将其解析为数字,那么它会将其转换为我使用date: 'MM/dd/yyyy'
时的日期。
如何以角度方式修复此问题?也许是指令?
在此视图中,person.trainingDate
在呈现的HTML中看起来像/Date(1402034400000)/
。即使我添加| date: 'MM/dd/yyyy'
它也显示相同,因为angular不会将字符串识别为可解析的日期。
<table class="table table-bordered table-hover">
<thead><tr><th>Training Date</th></tr></thead>
<tbody>
<tr ng-repeat="person in company.people">
<td>{{person.trainingDate}}</td>
</tr>
</tbody>
</table>
谢谢,
亚伦
答案 0 :(得分:0)
如果您的WebApi返回的值是实际日期而不是转换为字符串的日期,则返回的值将类似于&#34; 2012-03-19T07:22Z&#34; ,这是实际上是ISO 8601 standard。
由浏览器将此值理解为大多数浏览器除了IE8或更早版本(据我所知)之外所理解的日期,但为了保证将此值解析为日期,您可以使用其他JS像moment.js这样的图书馆。
答案 1 :(得分:0)
要解决您可以创建自定义过滤器的问题,请参阅http://jsbin.com/gaqoce/1/edit
var app = angular.module('app', []);
app.filter('customDate', function(){
return function(value) {
var myDate = new Date(value.match(/\d+/)[0] * 1);
return myDate;
};
});
app.controller('firstCtrl', function($scope){
$scope.person= {
trainingDate: '/Date(1402034400000)/'
};
});
HTML:
<div ng-controller="firstCtrl">
<p>{{person.trainingDate | customDate }}
</p>