11

オリジナル: ng-repeat で生成されたテーブルがあり、いくつかの異なる UNIX タイムスタンプで構成される何百ものエントリがあります。私は moment.js を使用して、「19分前」またはそれがどれだけ前のように表示されるようにしています。たとえば、テーブル全体を更新することなく、これらを 5 分ごとに更新するにはどうすればよいでしょうか (これには数秒かかり、ユーザーの並べ替えと選択が中断されます)。

4

5 に答える 5

17

以下のフィルターを使用しています。フィルターは 60 秒ごとに値を更新します。

angular
  .module('myApp')
  .filter('timeAgo', ['$interval', function ($interval){
    // trigger digest every 60 seconds
    $interval(function (){}, 60000);

    function fromNowFilter(time){
      return moment(time).fromNow();
    }

    fromNowFilter.$stateful = true;
    return fromNowFilter;
  }]);

そしてhtmlで

<span>{{ myObject.created | timeAgo }}</span>
于 2015-05-12T10:42:10.580 に答える
4

angular の$timeoutサービス (単なるラッパーsetTimeout()) を使用して、データを更新します。$digestAngular がデータ バインディングを更新するサイクルを実行する必要があることを示す 3 番目のパラメーターに注意してください。

例を次に示します: http://jsfiddle.net/jandersen/vfpDR/
(この例は毎秒更新されるため、表示するのに 5 分待つ必要はありません ;-)

于 2013-08-02T05:47:05.390 に答える
0

momentjs のラッパーを作成しましたhttps://github.com/jcamelis/angular-moment

<p moment-interval="5000">{{"2014-05-21T14:25:00Z" | momentFromNow}}</p>

うまくいくことを願っています。

于 2014-07-01T14:28:25.697 に答える