AngularJS: Borrar $watch
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?
Aceptado
$watch
devuelve 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
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);
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!
}
}