AngularJS:如何实施Live TimeAgo过滤器?

时间:2017-02-10 09:37:45

标签: angularjs angularjs-filter

我希望AngularJS过滤timeAgo应该应用于时间戳,以显示从时间戳传递的时间。这很简单:

filter('timeago', function() {
  return function(input) {
    return Date.now() - input;
  }
});

但是当我想要 LIVE 时(当用户在页面上 - 我们每秒更新值/每个摘要时)它似乎并不那么容易。我们不更改输入值,因此不会重新计算过滤器。 是否可以在不添加额外参数的情况下每秒重新计算一次?

Fiddle示例。

  • 我不是在寻找现成的库(比如角度矩)。对我来说,如何在AngularJs中实现这样的概念更有意思。

1 个答案:

答案 0 :(得分:1)

这是因为过滤器现在是无状态的,为了使它适用于您需要执行的过滤器:

function timeagoFilter(input) {
  return Date.now() - input;
}

timeagoFilter.$stateful = true;

return timeagoFilter;

但我个人将其转换为指令并使用普通javascript更改值 - 如果它仅用于显示目的 - 因为它很容易搞乱摘要周期并使应用程序性能降低