AngularJS 응용 프로그램에 시계 기능이 있습니다.
$scope.$watch('quartzCrystal', function () {
...
}
그러나 어떤 조건 (예 : 단일 페이지 응용 프로그램 에서 페이지 변경) 후에 시간 초과를 지우는 것처럼 시계를 중지하고 싶습니다.
어떻게해야합니까?
AngularJS 응용 프로그램에 시계 기능이 있습니다.
$scope.$watch('quartzCrystal', function () {
...
}
그러나 어떤 조건 (예 : 단일 페이지 응용 프로그램 에서 페이지 변경) 후에 시간 초과를 지우는 것처럼 시계를 중지하고 싶습니다.
어떻게해야합니까?
답변:
$watch
등록 해제 함수를 반환합니다. 호출하면의 등록이 취소 $watcher
됩니다.
var listener = $scope.$watch("quartz", function () {});
// ...
listener(); // Would clear the watch
scope. $ watch는 호출 할 수 있고 시계 등록을 취소하는 함수를 반환합니다.
다음과 같은 것 :
var unbindWatch = $scope.$watch("myvariable", function() {
//...
});
setTimeout(function() {
unbindWatch();
}, 1000);
문제가 발생한 직후에 취소하려면 콜백 내부의 시계를 지울 수도 있습니다. 그렇게하면 $ watch는 사용될 때까지 활성화 상태를 유지합니다.
이렇게 ...
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!
}
}
이상적으로는 스코프를 벗어날 때 모든 사용자 정의 시계를 제거해야합니다.
더 나은 메모리 관리 및 더 나은 앱 성능 향상에 도움이됩니다.
// 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
});
감시자의 복사본을 폐기하려면 다음을 사용할 수 있습니다.
watchers = void 0;
$on('$destroy')
) 모든 리스너를 등록 취소하는 것이 좋은 습관 인지 또는 AngularJS가 처리 할 것인지 알고 있습니까? 감사!