Angularjs Angular$destroy—文档建议手动解除绑定事件,但代码显示了其他情况
通过侦听此($destroy)事件,可以删除可能导致内存泄漏的事件侦听器。注册到作用域和元素的侦听器在销毁时会自动清理,但如果在服务上注册了侦听器,或者在未被删除的DOM节点上注册了侦听器,则必须自己清理,否则可能会导致内存泄漏 查看Angularjs Angular$destroy—文档建议手动解除绑定事件,但代码显示了其他情况,angularjs,event-handling,Angularjs,Event Handling,通过侦听此($destroy)事件,可以删除可能导致内存泄漏的事件侦听器。注册到作用域和元素的侦听器在销毁时会自动清理,但如果在服务上注册了侦听器,或者在未被删除的DOM节点上注册了侦听器,则必须自己清理,否则可能会导致内存泄漏 查看$destroy的代码,它似乎解除了eventlisteners的绑定: forEach(this.$$listenerCount,bind(null,递减listenerCount,this)) 那么,为什么Angular.js文档告诉我在发出$destroy事
$destroy
的代码,它似乎解除了eventlisteners的绑定:
forEach(this.$$listenerCount,bind(null,递减listenerCount,this))代码>
那么,为什么Angular.js文档告诉我在发出$destroy
事件时手动删除事件侦听器呢 事件可以通过以下方式绑定:
- 标记内(绑定到内置数据绑定的命名函数调用)
- 在指令中(绑定到自定义数据绑定的匿名函数)
- 在控制器中(绑定到angular.element的DOM事件处理程序)
- 在服务中(绑定到angular.module的DOM事件处理程序)
Angular具有以下事件:
$viewContentLoaded
$includeContentRequested
$includeContentLoaded
$includeContentError
$routeChangeStart
$routeChangeSuccess
$routeChangeError
$routeUpdate
$locationChangeStart
$locationChangeSuccess
$destroy
onabort
onautocomplete
onautocompleteerror
oncancel
oncanplay
oncanplaythrough
onchange
onclick
onclose
oncontextmenu
oncuechange
ondblclick
ondrag
ondragend
ondragenter
ondragexit
ondragleave
ondragover
ondragstart
ondrop
ondurationchange
onemptied
onended
oninput
oninvalid
onkeydown
onkeypress
onkeyup
onloadeddata
onloadedmetadata
onloadstart
onmousedown
onmouseenter
onmouseleave
onmousemove
onmouseout
onmouseover
onmouseup
onmousewheel
onpause
onplay
onplaying
onprogress
onratechange
onreset
onseeked
onseeking
onselect
onshow
onsort
onstalled
onsubmit
onsuspend
ontimeupdate
ontoggle
onvolumechange
onwaiting
onblur
onerror
onfocus
onload
onresize
onscroll
onafterprint
onbeforeprint
onbeforeunload
onhashchange
onlanguagechange
onmessage
onoffline
ononline
onpagehide
onpageshow
onpopstate
onstorage
onunload
onreadystatechange
$viewContentLoaded
已申请500美元
$includeContentLoaded
$includeContentError
$routeChangeStart
$routeChangeSuccess
$routeChangeError
$routeUpdate
$locationChangeStart
$locationChangeSuccess
$destroy
DOM具有以下事件:
$viewContentLoaded
$includeContentRequested
$includeContentLoaded
$includeContentError
$routeChangeStart
$routeChangeSuccess
$routeChangeError
$routeUpdate
$locationChangeStart
$locationChangeSuccess
$destroy
onabort
onautocomplete
onautocompleteerror
oncancel
oncanplay
oncanplaythrough
onchange
onclick
onclose
oncontextmenu
oncuechange
ondblclick
ondrag
ondragend
ondragenter
ondragexit
ondragleave
ondragover
ondragstart
ondrop
ondurationchange
onemptied
onended
oninput
oninvalid
onkeydown
onkeypress
onkeyup
onloadeddata
onloadedmetadata
onloadstart
onmousedown
onmouseenter
onmouseleave
onmousemove
onmouseout
onmouseover
onmouseup
onmousewheel
onpause
onplay
onplaying
onprogress
onratechange
onreset
onseeked
onseeking
onselect
onshow
onsort
onstalled
onsubmit
onsuspend
ontimeupdate
ontoggle
onvolumechange
onwaiting
onblur
onerror
onfocus
onload
onresize
onscroll
onafterprint
onbeforeprint
onbeforeunload
onhashchange
onlanguagechange
onmessage
onoffline
ononline
onpagehide
onpageshow
onpopstate
onstorage
onunload
onreadystatechange
事件
自动完成
自动完成错误
oncancel
oncanplay
oncanplaythrough
一旦改变
onclick
一次
oncontextmenu
一次性改变
ondblclick
昂特拉格
昂特拉根德
昂德拉金特
昂德拉出口
昂特拉格利夫
昂德拉戈弗
昂德拉格斯特
昂德罗普
持续时间变化
空的
合一
输入
奥尼瓦利德
onkeydown
按键
onkeyup
加载数据
加载元数据
空载起动
昂穆斯敦
OnMouseCenter
请假
鼠标移动时
鼠标移出时
安穆塞弗
鼠标放开
移动木马
暂停
在线游戏
玩
进展
汇率变动
重新设置
偶然
会见
当选
onshow
安索特
统计
事件
暂停
实时更新
自转
onvolumechange
等待
事件
一个错误
聚焦事件
装载
调整大小
昂斯克罗尔
onafterprint
印前
在卸载之前
onhashchange
在线语言更改
onmessage
奥诺夫林
在线
网页隐藏
网页秀
onpopstate
储存
昂洛德
onreadystatechange
参考资料
它告诉您不要销毁侦听器,而是销毁$timeout或$interval或$http etcNo,它声明您可以删除事件侦听器。这只是$timeout或$interval
的一个例子。还有更多的事件侦听器,但是他们不需要给出每个事件侦听器的示例。如果您已经注册了$rootScope watchers,那么这就是$rootScope watchers。读但是部分