4

数秒ごとにティックするようにコントローラーをセットアップしました。これにより、バックエンド API への安らかな呼び出しが行われます。別のセクション(別のコントローラーで処理される)に移動する場合を除いて、すべてが期待どおりに機能し、ティックは引き続き発生します。

コントローラーをスコープから完全に削除することは可能ですか?

これが私の現在のコントローラーの貼り付けです:

myApp.controller('SupervisorController', function($scope, supervisord, $timeout) {

    $scope.supervisord = supervisord;

    (function tick() {
        $scope.supervisord.fetch();
        $timeout(tick, 2500);
    })();
});
4

2 に答える 2

4

http://docs.angularjs.org/api/ng.$ro​​otScope.Scopeでは、

スコープが破棄される直前に、このスコープで $destroy イベントがブロードキャストされます。アプリケーション コードは、必要なクリーンアップを実行する機会を与える $destroy イベント ハンドラーを登録できます。

これはまさにあなたが望むもののようです。

于 2013-03-31T12:38:38.280 に答える
1

回避策は、使用var myInterval = setInterval(tick, 2500);して開始し、後でclearInterval(myInterval);再び停止することです (または類似の$timeout.cancel(myInterval) )。そのためには、両方のコントローラーでアクセスする必要があるため、 Angular サービスmyIntervalでラップすることを検討してください。

于 2013-03-31T12:26:37.193 に答える