It depends on the scope and not on the directive. If the area is destroyed, then all of its $ watchers die with it. On the page, change the scope to angular, so you should be safe.
When the scope dies, it gives the $ destroy event. You can watch it:
$scope.$on('$destroy', callback);
and you can manually disable $ watchers from the scope by calling the return function:
var sentinel = $scope.$watch('expression', callback); sentinel();
You can do this with $ on.
Oliver
source share