AngularJS: Borrar $watch

Resuelto kamaci asked hace 11 años • 6 respuestas

Tengo una función de vigilancia en mi aplicación AngularJS.

$scope.$watch('quartzCrystal', function () {
   ...
}

Sin embargo, después de alguna condición (en mi ejemplo, cambiar la página en mi aplicación de una sola página ), quiero detener esa visualización (como borrar el tiempo de espera).

¿Cómo puedo hacer eso?

kamaci avatar Feb 19 '13 19:02 kamaci
Aceptado

$watchdevuelve una función de baja del registro. Llamarlo cancelaría el registro del $watcher.

var listener = $scope.$watch("quartz", function () {});
// ...
listener(); // Would clear the watch
Umur Kontacı avatar Feb 19 '2013 12:02 Umur Kontacı

alcance.$watch devuelve una función que puede llamar y que cancelará el registro del reloj.

Algo como:

var unbindWatch = $scope.$watch("myvariable", function() {
    //...
});

setTimeout(function() {
    unbindWatch();
}, 1000);
Anders Ekdahl avatar Feb 19 '2013 12:02 Anders Ekdahl

También puedes borrar el reloj dentro de la devolución de llamada si quieres borrarlo inmediatamente después de que suceda algo. De esa manera tu $watch permanecerá activo hasta que lo uses.

Al igual que...

var clearWatch = $scope.$watch('quartzCrystal', function( crystal ){
  if( isQuartz( crystal )){
    // do something special and then stop watching!
    clearWatch();
  }else{
    // maybe do something special but keep watching!
  } 
}
SoEzPz avatar Jul 23 '2015 20:07 SoEzPz