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

时间:2015-03-30 12:59:11

标签: javascript angularjs

在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);

但它没有用。

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

感谢。

2 个答案:

答案 0 :(得分:1)

你可以绑定范围的destroy方法,并在那里取消间隔。

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

    }, 5000);

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

答案 1 :(得分:0)

如果我理解你正确得到的东西,最好通过状态变化的事件监听器来处理它:

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