Yes, you need to do that but not for events registered on ```element```.

In http://docs.angularjs.org/guide/directive, under the heading **Creating a Directive that Manipulates the DOM**, after the code sample, there's a section that explains it *Listeners registered to scopes and elements are automatically cleaned up when they are destroyed* and *You can use element.on('$destroy', ...) or scope.$on('$destroy', ...) to run a clean-up function when the directive is removed.*

See also https://github.com/angular/angular.js/blob/master/src/ng/directive/ngEventDirs.js#L47