programing

Angular JSangular-ui 모달 호출 시 $timeout 지우기

yellowcard 2023. 3. 26. 10:03
반응형

Angular JSangular-ui 모달 호출 시 $timeout 지우기

몇 개 있어요$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서비스는 a를 반환한다.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);
})();

언급URL : https://stackoverflow.com/questions/21018796/angularjs-clear-timeout-when-invoking-angular-ui-modal

반응형