Ich erstelle diese Direktive mit Angular, die als Mini-Timer funktioniert. Ich brauche nichts anderes als das Zählen von Sekunden und Minuten. Die Direktive funktioniert gut, solange ich auf der Seite bleibe, auf der die Direktive aufgerufen wird.
Das Problem tritt auf, wenn ich zu einer anderen Seite wechsele und dann zurückkomme. Der Timer sollte weiterhin mit der aktuellen Zeit angezeigt werden.
Ich habe ein globales window.timer
Objekt, das den Zustand des Timers speichert.
app.directive('callTimer', function() {
return {
restrict: 'E',
controller: function($scope, $rootScope) {
$scope.minutes = (window.timer.state.minutes || 0)
$scope.seconds = (window.timer.state.seconds || 0)
$scope.startTimer = function() {
window.timer.interval = window.setInterval(function() {
// incrementTimer
window.timer.state = {minutes: $scope.minutes,seconds: $scope.seconds};
$scope.$apply($scope.updateDisplay);
}, 1000);
};
$scope.stopTimer = function() { /*stuff to stop timer*/};
$scope.updateDisplay = function() {
$scope.minDisplay = String($scope.minutes).padLeft('0', 2);
$scope.secDisplay = String($scope.seconds).padLeft('0', 2);
};
$scope.updateDisplay();
}
};
});
Hier ist das HTML
{{minDisplay}}:{{secDisplay}}
Der Timer befindet sich auf meiner Startseite. Wenn ich zu einer anderen Seite gehe, zählt der Timer weiter, aber wenn ich zur Startseite zurückkehre, wird meine updateDisplay
Funktion nicht aufgerufen.
BEARBEITEN: Hinzufügen mehrer des Direktive-Codes.