2015-03-30 8 views
0

Есть ли способ остановить автоматическое обновление страницы после изменения состояния в Угловом JS?AngularJS - остановка автообновляющейся страницы при изменении состояния

У меня есть следующий код:

AngularJS контроллер

$scope.data= []; 
var findData= function() { 
    service.findData().then(function (data) { 
     $scope.data= data; 
    }); 
}; 
findData(); 

$interval(function() { 
    console.log("Refreshed!"); 
    findData(); 
}, 5000); 

Я попытался добавить дополнительное условие в функции $ интервального:

$interval(function() { 
    console.log("Refreshed!"); 
    if($state.$current.path.name == "stateWithRefresh") { 
     findData(); 
    } 
}, 5000); 

, но это не так Работа.

То, что я пытаюсь достичь, - это автоматическое обновление страницы через определенный интервал, но ТОЛЬКО, когда пользователь находится в состоянии, связанном с этой страницей.

Спасибо.

+0

Можете ли вы объяснить, о том, что вы имеете в виду о изменении состояния ..? – Ved

+0

Думайте, что он использует ui-router. Попробуйте $ timeout вместо $ interval. – liamness

+0

Да, я использую ui-router, я забыл упомянуть. – SSJVegito

ответ

1

Вы можете связать, чтобы уничтожить метод области действия и отменить интервал.

var stop = $interval(function() { 
     console.log("Refreshed!"); 
     findData(); 

    }, 5000); 

scope.$on('$destroy', function() { 
     $interval.cancel(stop); 
    }); 
+0

Это сделало трюк. Благодаря! – SSJVegito

0

Если я понимаю, что вы получаете при правильно, лучше справиться с этим с помощью прослушивателя событий для изменения состояния:

$scope.on('$stateChangeSuccess', function(e, toState) { 
    if(toState.name === 'stateWithRefresh') { 
     findData(); 
    } 
}); 
Смежные вопросы