检测angularjs路径控制器何时超出范围

detect when angularjs route controller goes out of scope?

本文关键字:范围 何时超 控制器 angularjs 路径 检测      更新时间:2023-09-26

我有一个连接到路由的控制器。控制器使用$timeout不断地轮询服务器。当路由更改时,我需要停止轮询,并在路由更改回来时重新启动它。

请帮忙。

这是我的代码:

(angular
 .module('app.controllers', ['ng', 'ngResource'])
 .controller('myContr', [
     /******/ '$scope', '$resource', '$timeout',
     function ($scope,   $resource,   $timeout) {
         function update() {
             $resource('my-service').get({}, function (d) {
                 // ...use data...
                 $timeout(update, UPDATE_INTERVAL);
             });
         };
         update();
     }
 ])
);
  • 保存$timeout的返回值(promise)(到$scope属性)
  • 在您的作用域上注册$destroy事件处理程序
  • 当事件处理程序触发时,对$timeout承诺调用cancel()

当路由变回时,控制器将被重新创建,因此您的现有代码应该再次启动轮询。