Ich mache eine Demo, in der ich nach regelmäßigen Zeitabständen Daten vom Server abrufe. $interval
Jetzt muss ich dies stoppen / abbrechen.
Wie kann ich das erreichen? Wie soll ich das tun, wenn ich den Prozess neu starten muss?
Zweitens habe ich noch eine Frage: Ich rufe nach regelmäßigen Zeitintervallen Daten vom Server ab. Gibt es eine Notwendigkeit zu verwenden $scope.apply
oder $scope.watch
?
Hier ist mein 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')
}) ;
}
});
quelle
apply()
, wenn Sie den$interval
Dienst verwenden, da er dies für Sie erledigt. Wenn Sie jedoch das integriertesetInterval()
Gerät verwenden, müssen Sie es möglicherweise verwenden$scope.$apply()
.$destroy
funktioniert gut zusammen mithttp-auth-interceptor
Ähnlichem in meinem Fall, wo ich das Intervall während eines Authentifizierungsfehlers (wie abgelaufene Sitzung) stoppen und nach erfolgreicher Authentifizierung erneut starten möchte. Vielen Dank für diese hervorragende Lösung.quelle
quelle
$location.path()
und nicht den Statusnamen verwendequelle
Wenn Sie ein Intervallspeicherversprechen für eine Variable erstellen möchten:
Und wenn Sie das Intervall stoppen / löschen möchten, verwenden Sie einfach:
quelle