javascript - ng-style background color
AngularJS: Clear $ reloj (7)
En algún momento, su $ watch está llamando dynamically
y creará sus instancias, por lo que tendrá que llamar a la función de desregistro antes de su función de $watch
if(myWatchFun)
myWatchFun(); // it will destroy your previous $watch if any exist
myWatchFun = $scope.$watch("abc", function () {});
Tengo una función de reloj 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 ese reloj (como el tiempo de espera de borrado).
¿Cómo puedo hacer eso?
Lo ideal es que cada reloj personalizado se elimine cuando abandones el alcance.
Ayuda en una mejor gestión de la memoria y un mejor rendimiento de la aplicación.
// call to $watch will return a de-register function
var listener = $scope.$watch(someVariableToWatch, function(....));
$scope.$on(''$destroy'', function() {
listener(); // call the de-register function on scope destroy
});
Para descartar la copia de los observadores, puede utilizar esto:
watchers = void 0;
Si tiene demasiados observadores y necesita eliminarlos a todos, puede empujarlos a una matriz y destruir cada $watch
en un bucle.
var watchers = [];
watchers.push( $scope.$watch(''watch-xxx'', function(newVal){
//do something
}));
for(var i = 0; i < watchers.length; ++i){
if(typeof watchers[i] === ''function''){
watchers[i]();
}
}
watchers = [];
También puede borrar el reloj dentro de la devolución de llamada si desea borrarlo justo después de que suceda algo. De esa manera, su $ watch permanecerá activo hasta que se use.
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!
}
}
alcance. $ watch devuelve una función a la que puede llamar y que anulará el registro del reloj.
Algo como:
var unbindWatch = $scope.$watch("myvariable", function() {
//...
});
setTimeout(function() {
unbindWatch();
}, 1000);
$watch
devuelve una función de desregistro. Llamarlo anularía el registro del $watcher
.
var listener = $scope.$watch("quartz", function () {});
// ...
listener(); // Would clear the watch