0
オンクリック(ng-click)して$ intervalを呼び出すボタンがあります。ブラウザの戻るボタンでボタンを含む状態に戻ると、$ intervalが再び呼び出されます。インターバルは$ state.go()のタイマーであり、状態を再び変更するため、これは問題です。
私のコードは以下の通りです。なぜこれが起こっているのか、$ intervalをトリガーせずにブラウザーを使って後方へのナビゲーションを可能にするためにこれを書き直す方法を誰もが説明できますか?前もって感謝します。
コントローラー:
angular.module('app')
.component('splash', {
templateUrl: '/templates/splash.template.html',
controller: SplashController
})
SplashController.$inject = ['SplashService', '$http', '$stateParams', '$state', '$interval']
function SplashController(SplashService, $http, $stateParams, $state, $interval) {
console.log("you are in the splash Controller")
const vm = this
vm.$onInit = onInit
vm.userAuth = {}
function onInit() {
// $(".button-collapse").sideNav()
}
vm.logIn = function() {
console.log('userAuth: ', vm.userAuth)
SplashService.logIn(vm.userAuth)
}
vm.moveLotus = function() {
let lotus_top = document.getElementById('animated-login-top')
let lotus_bottom = document.getElementById('animated-login-bottom')
// let menuIcon = document.getElementById('menuIcon')
// menuIcon.style.display = 'none'
lotus_top.className = 'animated-login-top-move move-lotus-top'
lotus_bottom.className = 'lotus-login-bottom-pulse move-lotus-bottom'
// wait 2 seconds and then &state.go('feed')
let goTo = function(state) {
$state.go(state)
}
$interval(function() {
goTo('feed')
}, 2500)
}
}
HTML:
<div class="row demoRow center">
<a href="#" ng-click="$ctrl.moveLotus()">Demo Site</a>
</div>
これは機能しません。私はブラウザが状態に戻ったときに問題が発生するので手動で破棄することはできません。私は状態ロードのための$ onInit関数で '' $ interval.cancel(goToFeed) '' 'を実行しようとしても、これはうまくいきません。 – MrJonesIsMe