2013-07-10 20 views
5

Mam kontroler dołączony do trasy. Sterownik stale odpytuje serwer za pomocą $timeout. Po zmianie trasy należy zatrzymać odpytywanie i rozpocząć ją ponownie po zmianie trasy.wykryj, kiedy kontroler trasy angularjs wykracza poza zakres?

Proszę o pomoc.

Oto mój kod:

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

Odpowiedz

3
  • Zapisz wartość zwrotna (obietnica) od $timeout (do właściwości zakres $).
  • Zarejestruj obsługę zdarzeń $destroy w swoim zasięgu.
  • Zadzwoń pod cancel() z tą obietnicą $ timeout, gdy wyzwalacz zdarzeń zostanie uruchomiony.

Po zmianie trasy kontroler zostanie odtworzony, więc istniejący kod powinien ponownie rozpocząć polling.

Powiązane problemy