2013-07-10 85 views
5

我有一個連接到路由的控制器。控制器不斷地使用$timeout輪詢服務器。當路由改變時,我需要停止輪詢,並在路由改回時重新啓動它。當angularjs路由控制器超出範圍時檢測?

請幫忙。

這裏是我的代碼:

(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(); 
    } 
]) 
); 

回答

3
  • 保存從$timeout的返回值(承諾)(到$ scope屬性)。
  • 在您的示波器上註冊一個$destroy事件處理程序。
  • 致電cancel()該事件處理程序觸發時,該超時承諾。

當路由改回來時,控制器將被重新創建,所以您現有的代碼應該再次啓動輪詢。

相關問題