Comment effacer ou arrêter timeInterval dans angularjs?
Je fais une démo dans laquelle je suis, extraction de données à partir du serveur après des intervalles de temps réguliers à l'aide de $interval
Maintenant, j'ai besoin d'arrêter/annuler cette.
Comment je peux faire? Si j'ai besoin de redémarrer le processus, comment dois-je faire?
Autre part, j'ai encore une question: je suis de l'extraction de données à partir du serveur après reqular intervalles de temps. Est-il besoin d'utiliser $scope.apply
ou $scope.watch
?
Voici mon plunker:
app.controller('departureContrl',function($scope,test, $interval){
setData();
$interval(setData, 1000*30);
function setData(){
$scope.loading=true;
test.stationDashBoard(function(data){
console.log(data);
$scope.data=data.data;
$scope.loading=false;
//alert(data);
},function(error){
alert('error')
}) ;
}
});
http://plnkr.co/edit/ly43m5?p=preview
Vous devez vous connecter pour publier un commentaire.
Vous pouvez stocker la promesse retourné par l'intervalle et l'utilisation
$interval.cancel()
à cette promesse, qui annule l'intervalle de cette promesse. De déléguer le démarrage et l'arrêt de l'intervalle, vous pouvez créerstart()
etstop()
fonctions chaque fois que vous voulez arrêter et démarrer à partir d'un événement spécifique. J'ai créé un extrait de code ci-dessous montrant les bases de démarrage et d'arrêt d'un intervalle, par la mise en œuvre en vue grâce à l'utilisation d'événements (par exemple,ng-click
) et dans le contrôleur.JS:
HTML:
apply()
, si vous utilisez le$interval
service, car il le fait pour vous. Mais si vous êtes en utilisant le haut-setInterval()
ensuite, vous pourriez avoir à utiliser$scope.$apply()
.$destroy
fonctionne bien avec l'ensemble duhttp-auth-interceptor
comme dans mon cas où je veux arrêter de l'intervalle de temps pendant auth échec (comme expiration de la session) et démarrez à nouveau après réussie auth. Merci pour cette excellente solution.$location.path()
et pas le nom de l'étatLorsque vous souhaitez créer intervalle de magasin promesse de variable:
Et quand vous voulez arrêter /effacer l'intervalle suffit d'utiliser: