1

ユーザーのリストを検索して取得する小さな AngularJS アプリと、次に予定されている会議 (次の 8 時間以内に予定されていると仮定) を、現地時間への計算を容易にするために UTC の時間形式で JSON を使用してサーバーから取得します。 . 残り時間を計算できるように JavaScript を作成しましたが、Angular 内でこれを行う方法を書いたり理解したりしていません。

私が達成したいのは、スケジュールされた会議が完了するまでの残り時間または会議が開始されるまでの残り時間で DOM を更新できるようにすることです。$timeout サービスを使用して 1 つの要素を更新するのは簡単に思えますが、一度に複数の項目に対して ng-repeat 内でこのタスクを達成する方法については明確ではありません。

どんなアイデアでも大歓迎です!ありがとう!

4

2 に答える 2

2

ng-repeat には、アイテムのリストがあります。

<li ng-repeat="items" >{{ timeUntil(currentTime) }}</li>

$scope.currentTime だけを更新して、各項目に timeUntil メソッドを持たせてみてください。タイムアウトから $scope.currentTime を更新するだけです。残りは Angular が処理します。

ここで重要なことは、「式」を入力しているだけであり、Angular では、関数呼び出しが含まれていても、式が複雑になる可能性があることを知っていることです。

于 2013-04-24T19:20:33.790 に答える
2

重複した質問、ここで回答: https://stackoverflow.com/a/16204830/2275421

http://plnkr.co/edit/0JqK96irV4ETdWZYxO3P?p=preview

ng-repeat に影響しない別の配列を参照するように html を変更しました。

<td>in {{_timeLeft[$index]}}</td>

これは次のように更新されます。

$scope._timeLeft = [];

var intervalID = window.setInterval(function() {
    for (var i=0; i<$scope.items.length; i++) {
      $scope._timeLeft[i] = $scope.timeUntil($scope.items[i]._freeBusyTime);
    }
    $scope.$apply();
}, 1000);

'_timeLeft' が変更されたことを Angular に知らせるために $scope.$apply() が必要であることに注意してください。これにより、それへのすべての参照が更新されます。

于 2013-04-25T05:26:34.520 に答える