我有一个ng-repeat元素,它将循环$ http.get()结果。
<tr ng-repeat="blog in posts"> <td style="text-align:center">{{ $index+1 }}</td> <td>{{ blog.title }}</td> <td> {{ blog.author.name }} </td> <td> {{ blog.created_at | date:'MMM-dd-yyyy' }} </td> </tr>
我在MysqL数据库表中创建了timestamp的时间戳。而我正在使用angular.js v1.0.7。
我从db表获得相同的输出,日期过滤器不起作用。我该如何解决?
我的ajax电话,
$http({method: 'GET',url: 'http://localhost/app/blogs'}). success(function(data,status,headers,config) { $scope.posts = data.posts; }). error(function(data,config) { $scope.posts = []; });
传递给过滤器的日期需要为JavaScript Date类型。
你检查过blog.created_at的值是否显示为没有过滤器?
你说你支持的服务正在返回一个表示日期的字符串。您可以通过两种方式解决此问题:
>使您的服务器端代码返回一个json日期对象
检查服务器端代码如何序列化返回的json
>编写自己的过滤器,接受字符串日期并返回所需格式的日期
>注意:您可以在自己的过滤器中调用角度过滤器
您可以编写自己的过滤器如下:
app.filter('myDateFormat',function myDateFormat($filter){ return function(text){ var tempdate= new Date(text.replace(/-/g,"/")); return $filter('date')(tempdate,"MMM-dd-yyyy"); } });
并在您的模板中使用它:
<td> {{ blog.created_at | myDateFormat }} </td>
而不是遍历返回的数组,然后应用过滤器