angularjs。angular-ui modalを呼び出すときの$ TIMEOUTを消去します
-
21-12-2019 - |
質問
モーダルコントローラにはいくつかの$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);
})();
. 所属していません StackOverflow