5

我有一个连接到路由的控制器。控制器使用 . 不断地轮询服务器$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();
     }
 ])
);
4

1 回答 1

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

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

于 2013-07-10T18:33:51.703 回答