2016-04-04 2 views
1

Как я могу переписать в Angular2 и дротик этот код в angular1:

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

    }, properties.delay); 

Я пытался таким образом, но не получилось:

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

Есть идеи? Благодаря

ответ

0

Вы могли бы попробовать метод Observable.interval:

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

событие будет срабатывать каждый раз, когда достигается задержка. Таким образом, вызов, определенный при подписке, будет вызван соответствующим образом.

В вашем случае вы попытались смешать синхронный цикл с асинхронной обработкой с помощью функции setTimeout.

0

Вы можете использовать Timer класс для этого:

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(); 
    } 
Смежные вопросы