更新AngularJS中的实时持续时间

时间:2015-04-09 07:41:10

标签: javascript angularjs

我有一个AngularJS应用程序,可以显示这样的持续时间" 2分钟前"基于时间戳数据。

如何实时更新?没有使用windows.setInterval,我想知道它是否可以做得更多"棱角分明"

免责声明:我是AngularJS的新手

1 个答案:

答案 0 :(得分:0)

最直接的事情是创建一个指令:

app.directive("minutesAgo", function($interval) {
  var MINUTE = 60000;
  function updateMinutes(scope) {
    scope.minutes = Math.floor((Date.now() - new Date(scope.startTime)) / MINUTE);
    scope.pluralizedMinutes = scope.minutes < 1 ? "Less than a minute" :
                              scope.minutes +
                              (scope.minutes == 1 ? " minute" : " minutes");
  }

  return {
    restrict: "AE",
    scope: {
      startTime: "="
    },
    template: "<span>{{pluralizedMinutes}} ago</span>",
    link: function(scope, element) {
      updateMinutes(scope);
      $interval(function() {
        updateMinutes(scope);
      }, MINUTE);
    }
  };
})

这可以在具有控制器的元素内部使用,该控制器指定时间戳,如下所示:

<minutes-ago start-time="timestamp"></minutes-ago>

您可以尝试on Plunker