2015-04-24 5 views
0

Я пытаюсь установить интервал в моем приложении, и что-то вроде этогоКак установить интервал времени в моем случае

HTML

<div class="text"> 
    {{currentItem.name}} 
</div> 
<ul> 
    <li ng-repeat="item in items" ng-click="pickItem($index)">{{item.type}}</li> 
</ul> 

Контроллер

$scope.index = 0; 
$scope.currentItem = $scope.items[$scope.index]; // set the first item 

//The interval start 3 second after the app is loaded 
$scope.startInt = $interval(function() { 
    $scope.currentItem = $scope.items[$scope.index]; 
    $scope.index++; 

    if(scope.index === $scope.items.length) { 
     $scope.index=0; 
    } 
}, 3000) 

Вышеуказанные коды начнут интервал «ПОСЛЕ» страница загружается в течение 3 секунд. Я надеялся начать интервал сразу, когда первая страница загружается. Есть какой-либо способ сделать это? Большое спасибо!

ответ

1

Преобразование анонимную функцию в имени функции. Затем вызовите функцию перед использованием интервала

function IntervalFunction() { 
    $scope.currentItem = $scope.items[$scope.index]; 
    $scope.index++; 

    if(scope.index === $scope.items.length) { 
     $scope.index=0; 
    } 
} 

IntervalFunctin(); 
$scope.startInt = $interval(IntervalFunction, 3000); 
1

Одно простое решение:

var intervalWork = function() { 
    $scope.currentItem = $scope.items[$scope.index]; 
    $scope.index++; 

    if(scope.index === $scope.items.length) { 
     $scope.index=0; 
    } 
}; 

intervalWork(); 

//The interval start 3 second after the app is loaded 
$scope.startInt = $interval(intervalWork, 3000) 
1
function notificationsCtrl($scope, $interval) { 
    var fun = function(){ 
     $scope.currentItem = $scope.items[$scope.index]; 
     $scope.index++; 

     if(scope.index === $scope.items.length) { 
      $scope.index=0; 
     }; 
    fun(); 
    $interval(fun, 3000); 
}; 
Смежные вопросы