2015-07-21 27 views
0

我想创建一个自定义角矩滤波器以仅显示从specefic出生日期开始经过的年份。如何创建自定义角矩滤波器

比如我有一个价值1990年6月5日,它应该显示25

我使用:<time am-time-ago="player.birthday"></time>

但它显示it's been 25 years

回答

1

常规amTimeAgo过滤器有三个参数:

  • 预处理
  • 后缀

按照该实施momentjs#fromNow

如果最后一个传递的参数的过滤器是true,你会从输出改变:

it's been 25 years25 years

如果不剪,你可以像这样创建自己的过滤器:

.filter('straightUpYear', function (amTimeAgoFilter) { 
    return function (value) { 
    return amTimeAgoFilter(value, false, true).replace(/years/, ''); 
    } 
}); 

然后用它作为这样的:

<time>{{ player.birthday | straightUpYear }}</time> 

jsbin showcasing the result


值得注意的事情;您要求filter,但在您的示例中,您使用指令版本的amTimeAgo

如果目标是创建一个指令,请编辑您的问题以指定它,我将相应地修改我的答案。

+0

感谢您的回答,这是更好的指令还是过滤器? –

+0

那么,一个过滤器可以更可重用,因为你可以在你的控制器和服务中使用它。另一方面,指令在DOM操作方面更加强大,您可以*在指令中使用过滤器。这取决于你需要多少果汁:) –

+0

而且我也会注意到;在内部使用过滤器*您的控制器**比使用管道'|'表示法在视图中使用更快**,因为过滤器在使用管道时会评估两次。但是从控制器调用一次。 –