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

时间:2013-07-10 18:26:18

标签: javascript angularjs

我有一个连接到路线的控制器。控制器使用$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();
     }
 ])
);

1 个答案:

答案 0 :(得分:3)

  • 保存从$timeout(到$ scope属性)的返回值(承诺)。
  • 在您的范围内注册$destroy事件处理程序。
  • 在事件处理程序触发时,在$ timeout声明上调用cancel()

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