5

ルートにアタッチされたコントローラーがあります。コントローラは、 を使用してサーバーを常にポーリングします$timeout。ルートが変更されたらポーリングを停止し、ルートが元に戻ったらポーリングを再開する必要があります。

助けてください。

これが私のコードです:

(angular
 .module('app.controllers', ['ng', 'ngResource'])
 .controller('myContr', [
     /******/ '$scope', '$resource', '$timeout',
     function ($scope,   $resource,   $timeout) {
         function update() {
             $resource('my-service').get({}, function (d) {
                 // ...use data...
                 $timeout(update, UPDATE_INTERVAL);
             });
         };
         update();
     }
 ])
);
4

1 に答える 1

3
  • 戻り値 (promise) を$timeout($scope プロパティに) 保存します。
  • $destroyスコープにイベント ハンドラーを登録します。
  • cancel()イベント ハンドラーがトリガーされたときに、その $timeout promise を呼び出します。

ルートが元に戻ると、コントローラーが再作成されるため、既存のコードでポーリングを再度開始する必要があります。

于 2013-07-10T18:33:51.703 に答える