每当特定的$状态被命中时,Angular就会调用一个控制器特定的函数

时间:2015-07-27 17:20:53

标签: angularjs

我正在等待状态超时的等待屏幕。 我希望每次用户进入该状态时都会调用$ timeout。

类似于下面的函数:

function LoadingController($scope,$state,$timeout){
    this.$state=$state;
    var self=this;

    if(this.handleStateValidity()){
        var timeOutFn=function(){
            self.goToRedirectUrl();
        }
        $timeout(timeOutFn,2000);

    }
});

当然只有在首次加载控制器时才会调用它。如何检测此控制器所关注状态的后续命中?

1 个答案:

答案 0 :(得分:0)

我所做的是第一次在指令或控制器初始化的链接上执行该功能。然后开始听取状态。 希望有更好的方法来做到这一点,我认为这有点“脏”:

    var timeOutFn=function(){
        self.goToRedirectUrl();
    }
    $rootScope.$on('$stateChangeStart', function(event, toState, toParams) {
    if(toState.name=='loading'){
        $timeout(timeOutFn,2000);
    }
    });
    $timeout(timeOutFn,2000);