質問

モーダルコントローラにはいくつかの$timeout式があります

App.controller('ModalCtrl', function ($scope, $timeout) {
    for (var i = 0; i < 10; i++) {
        (function () {
            var timer = $timeout(function () {
                console.log('timer')
            }, 1000);
        })()
    }
})
.

モーダルを呼び出すときにすべてのタイマーをクリアする必要があります。

App.controller('MainCtrl', function ($scope, $modal, $timeout) {
    $scope.showMap = function () {
        var modal = $modal.open({
            templateUrl: 'modalap.html',
            controller: 'modalCtrl',
        })

        modal.result.then(function () { //fires when modal is resolving
        }, function () { //fires when modal is invoking
        });
    } })
.

どうすればいいですか?

PS不良コードフォーマットですみません。私は理由がわからないが、私はそれを良くフォーマットすることができない。私は複製されたコードここ

役に立ちましたか?

解決

$timeoutサービスは、タイムアウトをキャンセルするために使用できるPromiseオブジェクトを返します。

// Start a timeout
var promise = $timeout(function() {}, 1000);

// Stop the pending timeout
$timeout.cancel(promise);
.

保留中のすべてのタイムアウトをキャンセルするには、モーダルを開くと、約束のリストを維持し、完全なリストをキャンセルする必要があります。

他のヒント

また、このことをすることで自分自身をキャンセルさせることもできます...

(function(){
  var timer = $timeout(function(){
    console.log(timer.$$timeoutId);
    $timeout.cancel(timer);
  }, 1000);
})();
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top