angularjs - AngularJS:如何实现Live TimeAgo过滤器?

标签 angularjs angularjs-filter

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

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

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

Fiddle示例。
  • 我不是在寻找现成的库(例如角矩)。对于我来说,如何在AngularJs中实现这样的概念更有趣。
  • 最佳答案

    发生这种情况是因为过滤器现在是无状态的,要使其适用于此过滤器,您需要执行以下操作:

    function timeagoFilter(input) {
      return Date.now() - input;
    }
    
    timeagoFilter.$stateful = true;
    
    return timeagoFilter;
    

    但就我个人而言,我会将其转换为指令并使用简单的javascript更改值(如果仅用于显示目的),因为这样很容易搞乱摘要循环并使应用程序性能下降

    关于angularjs - AngularJS:如何实现Live TimeAgo过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42156015/

    相关文章:

    angularjs - ng-include 禁止运行路由

    javascript - 使用 Angular.js 高级过滤数据

    javascript - 在 Angular js中过滤(键,值)数组

    javascript - angularjs ng-如果 ng-repeat 不为空

    javascript - Angular 应用程序在 IE 中崩溃,但在开发工具打开时不会崩溃

    javascript - 使用 Angular $filter 搜索和过滤深层 json 值

    javascript - orderBy,第一个应该是最旧的,剩下的是最新的

    arrays - 使用复选框和 AngularJS 过滤 ng-repeat 列表

    javascript - Promisify QT 回调到 AngularJS Promise

    angularjs - 如何在angularjs中调用 Controller 中的函数?