Angular:在$ http调用冻结应用程序后,$ stateChangeSuccess中的$ state.go

时间:2016-04-13 17:39:59

标签: angularjs

$http.get中的run方法中发出stateChangeSuccess请求并重定向到某个州时,该应用会冻结。该应用程序不会遇到循环,而是冻结。

$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {

    $http({
        method: "GET",
        url: '/some/api/endpoint',
    }).then(function(response) {
        // proceed with next route
    }, function(response) {
        $state.go('myNewState', {}, {reload: true});
    });
});

知道为什么吗?

1 个答案:

答案 0 :(得分:0)

除了我的评论之外 - 如果请求失败,您将重定向到myNewState,然后由于循环状态更改而一次又一次地运行相同的请求。

尝试在请求之前添加此内容:

if( toState.name == 'myNewState' ) {
    return;
}

如果您将用户重定向到myNewState

,则不会触发此请求