根据Angular文档
$scope:
当希望将作用域及其子作用域与父作用域永久分离时,必须在作用域上调用’$ destroy()’,从而通过调用停止参与模型更改检测和侦听器通知。
也
删除还意味着当前范围可以进行垃圾回收。
如此看来,当
$destroy()调用时,所有观察者和侦听器都将被删除,并且表示作用域的对象变为
eligible for garbagecollection。
如果我们查看
destroy()
源代码,将会看到一行:
forEach(this.$$listenerCount, bind(null, decrementListenerCount, this));
应该删除所有侦听器。
如@glepretre所述,它适用于控制器中的观察者和侦听器。上面列出的同一文档页面指出:
请注意,在AngularJS中,还有一个$ destroy jQuery事件,该事件可用于在从DOM中删除元素之前清除DOM绑定。
因此,如果指令中有特定的侦听器,则应侦听
$destroy事件并自己进行必要的清理



