angularjs - $destroy 事件在 Angular 不起作用

标签 angularjs scope timeout ondestroy

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

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

最佳答案

使用 $routeChangeStart而不是 $destroy
$routeChangeStart

在路由改变前广播。此时,路由服务开始解析发生路由更改所需的所有依赖项。通常,这涉及获取 View 模板以及在解析路由属性中定义的任何依赖项。一旦解决了所有依赖项,就会触发 $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
            }
        });

关于angularjs - $destroy 事件在 Angular 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29764146/

相关文章:

闲置一段时间后出现 node.js ECONNRESET 错误

java - readShort()期间如果出现超时异常,socket接收到的数据会发生什么情况?

linux - Bash:WAITING超时

javascript - 如何测试 $rootScope.$emit 事件?

javascript - 搜索过滤器不起作用。 Angular Js

CSS Bootstrap 固定 header

javascript - 确定 JavaScript 类中的问题范围

python - 为什么我不能修改作为函数内部参数传递的列表?

angularjs - 如何让 travis 在 Chrome 上执行 Angular 测试 ("Please set env variable CHROME_BIN")

sql - 根据另一个表中的条件选择一个表中的记录