2017-08-26 3 views
0

ich das AngularJS konvertieren wollen, aber ich weiß nicht, woConvert `setInterval` zu AngularJS mit AngularJS Dienstleistungen

beginnen
// Set the date we're counting down to 
    var countDownDate = new Date("Oct 1, 2022 15:37:25").getTime(); 
    // Update the count down every 1 second 
    var x = setInterval(function() { 

     // Get todays date and time 
     var now = new Date().getTime(); 

     // Find the distance between now an the count down date 
     var distance = countDownDate - now; 

     // Time calculations for days, hours, minutes and seconds 
     var days = Math.floor(distance/(1000 * 60 * 60 * 24)); 
     var hours = Math.floor((distance % (1000 * 60 * 60 * 24))/(1000 * 60 * 60)); 
     var minutes = Math.floor((distance % (1000 * 60 * 60))/(1000 * 60)); 
     var seconds = Math.floor((distance % (1000 * 60))/1000); 

     $('#clock-days').text(days); 
     $('#clock-hours').text(hours); 
     $('#clock-minutes').text(minutes); 
     $('#clock-seconds').text(seconds);  
    }, 1000); 

Das erste Problem ist, dass mathematische Funktion nicht verfügbar ist und wie Intervall schreiben ?

+0

wo Math nicht verfügbar? angularjs oder eckig? –

Antwort

3

Sie können nur die setInterval durch $interval in der Steuerung ersetzen, dann ändern Sie die Variablen Var zu Scope-Variablen, bitte studieren Sie die unten Geige, um die Unterschiede zu identifizieren.

DEMO: JSFiddle

var app = angular.module('myApp', []); 
app.controller('MyController', ['$scope', '$interval', function($scope, $interval) { 
    var countDownDate = new Date("Oct 1, 2022 15:37:25").getTime(); 
    // Update the count down every 1 second 
    var x = $interval(function() { 

     // Get todays date and time 
     var now = new Date().getTime(); 

     // Find the distance between now an the count down date 
     var distance = countDownDate - now; 

     // Time calculations for days, hours, minutes and seconds 
     $scope.days = Math.floor(distance/(1000 * 60 * 60 * 24)); 
     $scope.hours = Math.floor((distance % (1000 * 60 * 60 * 24))/(1000 * 60 * 60)); 
     $scope.minutes = Math.floor((distance % (1000 * 60 * 60))/(1000 * 60)); 
     $scope.seconds = Math.floor((distance % (1000 * 60))/1000); 
    }, 1000); 
}]);