9
votes

Intervalle de temps d'arrêt lors de la navigation dans Angularjs

Actuellement, j'utilise actuellement JS Angular

J'ai une méthode d'obtention d'une méthode pour obtenir des données du côté serveur dans par défaut.html page xxx

La fonction ci-dessus permet d'obtenir les données de la méthode côté serveur dans toutes les 5 secondes.

ici, j'ai un problème.

J'ai plus d'autres pages, comme

  • par défaut2.html, par défaut3.html, par défaut4.html, par défaut5.html.

    La minuterie est toujours en cours d'exécution pendant que je navigue par défaut.html page sur par défaut1.html page. Je ne veux que cette minuterie en cours d'exécution dans default.html . Si je vais à une autre page, la minuterie devrait s'arrêter. Comment pouvons-nous y arriver?


2 commentaires

Voulez-vous dire si vous avez toutes les cinq pages ouvertes dans 5 Windows / onglets, un seul devait appeler une minuterie? Sinon, les minuteries s'arrêteront automatiquement lorsque vous naviguez d'une page à une autre ...


yup, absolument correct. Je veux désigner une intervalle sur la page par défaut lorsque je navigue de la page par défaut à une autre page.


3 Réponses :


-1
votes

Appelez la fonction ClearInterval lors de la navigation de la page par défaut

E.g. P>

var myVar = setInterval(function () {
        $scope.$apply(bindActiveLoans());
    }, 5000);


function myStopFunction()
{
clearInterval(myVar);
} 


2 commentaires

Pouvez-vous donner un code exemple? Je veux désigner la page de la page par défaut


Comment puis-je écrire un événement de navigation dans la page par défaut?



1
votes

Vous pouvez écouter l'événement POUTCHANGANGESTART CODE> et faire le nettoyage de l'intervalle en fonction des paramètres de route,

  $scope.$on('$routeChangeStart', function (scope, next, current) {
           if(<next is not default.aspx>){
           // clear interval here
            }
  });


1 commentaires

super. Je vais essayer de cette façon.



16
votes

de l'exemple angularjs dans le Page API d'intervalle .

var interval = null;

module.controller('SomeController', '$interval', function($interval) {
    interval = $interval(function() {
        ...
    }, 2000);
}).run(['$rootScope', '$interval', function($rootScope, $interval) {
    $rootScope.$on('$routeChangeStart', function() {
        $interval.cancel(interval);
    });
}]);


0 commentaires