2016-04-04 4 views
1

Wie ich in Angular2 und Dart diesen Code in angular1 umschreiben kann:

$interval(function() { 
    if($scope.carouselIndex < $scope.showcases.length -1){ 
     $scope.carouselIndex = $scope.carouselIndex + 1; 
    } else { 
     $scope.carouselIndex = 0; 
    } 

    }, properties.delay); 

Ich habe versucht, auf diese Weise aber nicht funktioniert hat:

carouselIndex = 0; 
      for(int i=0; i<contents.size(); i++){ 
      if(carouselIndex < contents.length -1){ 
       setTimeout(function() { 
       carouselIndex = carouselIndex + 1; 
       }, 1000); 
      } else { 
       carouselIndex = 0; 
      } 
     } 

Irgendeine Idee? Dank

Antwort

0

Sie könnten versuchen, die Observable.interval Methode:

Observable.interval(properties.delay).subscribe(() => { 
    if (this.carouselIndex < this.showcases.length - 1) { 
    this.carouselIndex = this.carouselIndex + 1; 
    } else { 
    this.carouselIndex = 0; 
    } 
}); 

Ein Ereignis wird jedes Mal ausgelöst werden, die Verzögerung erreicht ist. Daher wird der beim Abonnieren definierte Rückruf entsprechend aufgerufen.

In Ihrem Fall haben Sie versucht, mit asynchroner Verarbeitung mit der setTimeout Funktion eine synchrone Schleife zu mischen.

0

können Sie verwenden, um die Timer Klasse für diese:

Timer _timer; 

    someFunc() { 
    _timer = new Timer.periodic(const Duration(milliseconds: 1000 /*properties.delay*/), 
     (_) { 
     if (this.carouselIndex < this.showcases.length - 1) { 
     this.carouselIndex = this.carouselIndex + 1; 
     } else { 
     this.carouselIndex = 0; 
     } 
    }); 

    // to stop the periodic execution use 
    // _timer.cancel(); 
    }