AngularJS-状态更改时停止自动刷新页面

AngularJS - stop auto-refreshing page when state is changed

本文关键字:刷新 状态 AngularJS-      更新时间:2023-09-26

一旦Angular JS中的状态发生变化,是否有方法停止自动刷新页面?

我有以下代码:

AngularJS控制器

$scope.data= [];
var findData= function() {
    service.findData().then(function (data) {
        $scope.data= data;
    });
};
findData();
$interval(function() {
    console.log("Refreshed!");
    findData();
}, 5000);

我尝试在$interval函数中添加一个额外的条件:

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

但没有奏效。

我试图实现的是在一定时间间隔后自动刷新页面,但仅当用户处于与该页面相关联的状态时。

谢谢。

您可以绑定到destroy方法的作用域,并在那里取消间隔。

    var stop = $interval(function() {
        console.log("Refreshed!");
        findData();
    }, 5000);
scope.$on('$destroy', function() {
        $interval.cancel(stop);
    });

如果我正确理解您的理解,最好使用状态更改的事件侦听器来处理:

$scope.on('$stateChangeSuccess', function(e, toState) {
    if(toState.name === 'stateWithRefresh') {
        findData();
    }
});