angularjs – $destroy事件无法处理角度

$scope.$on('$destroy', function (event){    
        $timeout.cancel(promiseObj);    
    });

如果我在正在加载的页面上(因为页面包含$http请求,加载数据需要时间),并且在加载时,我从导航更改页面,$timeout未被删除,并且连续的http调用是去.你能帮我吗?

最佳答案 使用$routeChangeStart而不是$destroy

$routeChangeStart

在路线改变之前广播.此时,路由服务开始解决路由更改发生所需的所有依赖关系.通常,这涉及获取视图模板以及解析路由属性中定义的任何依赖项.一旦解决了所有依赖关系,就会触发$routeChangeSuccess.

可以通过调用事件的preventDefault方法来防止路由更改(以及触发它的$location更改).有关事件对象的更多详细信息,请参阅$rootScope.Scope.

所以请尝试以下代码.

$scope.$on('$routeChangeStart', function (scope, next, current) {
            if (next.$$route.controller != "Your Controller Name") {
               $timeout.cancel(promiseObj);// clear interval here
            }
        });
点赞