- There is a difference between "[detach](http://api.jquery.com/detach/)" and "[remove](http://api.jquery.com/remove/)"
- jqLite does not have "detach", only "remove"
- This `forEach` loop above emulates the "detach" behaviour
- Sometimes we need to call `remove` - it is when the scope is destroyed (see https://github.com/angular-ui/bootstrap/pull/486)
- But by calling "remove" and clearing all data and bindings from the compiled DOM - only to hide the tooltip, without effectively needing to do it - we had the ng-model binding issue
- Now, we selectively call "remove" or the "detach" equivalent. The "remove" function is effectively called only when needed (i.e., when the scope is actually being destroyed).