Сегодня я столкнулся с очень «кроличьей норой» Angular, на который я не смог найти ответ. В документах $scope
вы можете зарегистрировать обработчик событий на "$destroy"
, который вызывается прямо перед уничтожением области видимости. Таким образом, вы можете отменить регистрацию обработчиков событий следующим образом:
var deregister = $scope.$on('myCustomEvent', function () {
// do some crazy stuff
});
$scope.$on('$destroy', function () {
deregister();
});
Однако $scope.$on('$destroy', ...)
должен создать свой собственный обработчик. Это автоматически уничтожается, или вам нужно сделать что-то вроде следующего, чтобы уничтожить его?
var deregister = $scope.$on('myCustomEvent', function () {
// do some crazy stuff
});
var deregisterDestroy = $scope.$on('$destroy', function () {
deregister();
deregisterDestroy();
});