将重复的项目传递给自定义过滤器

时间:2014-11-07 15:48:15

标签: javascript angularjs

我需要将一个字符串传递给一个函数,该函数将它转换为一个名为stringToDate()的JavaScript日期对象。如果不首先执行此操作,Angular日期过滤器将无法工作,因为它需要Date对象。我编写了自定义过滤器,并在我的视图中使用了以下代码。

<div ng-repeat="blogPost in blogPosts" class="blog-item">
    <h6>{{blogPost.date | stringToDate:blogPost.date | date: 'medium' }}</h6>
</div>

这是有效的,但有一种更简洁的方法来传递它“blogPost.date”看起来很麻烦,我觉得我不是以Angular方式做的。

1 个答案:

答案 0 :(得分:2)

Angular已经能够格式化您的日期。检查日期过滤器文档here

<h6>{{blogPost.date | date: 'medium' }}</h6>

但是如果你想在你的过滤器中做一些自定义工作,你不需要将 blogPost.date 传递给你的自定义过滤器,它会被隐含地作为第一个参数传递

<div ng-repeat="blogPost in blogPosts" class="blog-item">
  <h6>{{blogPost.date | stringToDate | date: 'medium' }}</h6>
</div>

你的过滤器:

.filter('stringToDate', function() {
  return function (date) {
    return new Date(date);
  };
});

检查工作plunker