如何创建自定义 angular-moment 过滤器

How to create a custom angular-moment filter

我想创建一个自定义 angular 时刻过滤器以仅显示从特定出生日期起经过的年份。

例如我有一个值 1990-06-05,它应该显示 25。

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

但是显示it's been 25 years

常规 amTimeAgo 过滤器采用三个参数:

  • 价值
  • 预处理
  • 后缀

as per the momentjs#fromNow implementation.

如果最后传递给过滤器的参数是 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 指令 版本。

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