angularjs指令的$element如何完全做remove

我发现directive link里面的$element不是deep-copy:
一般$element是这样

<div></div>

深度拷贝后的就有childNode了

<div>
    <img>
</div>

如果直接destory的时候remove不掉它的childNode,需要用cloneNode做一次深度拷贝,之后append上去再remove才行,否则就会有内存泄漏。
但是这样会有性能上的问题,有谁知道angular本身有没有提供什么remove $element的接口?

阅读 4.8k
1 个回答

问题找到了,remove接口没有问题。
原因是生成directive的时候<img>挂了重复的2个结构,destroy的时候先把<div>父节点全部remove掉,再去remove<img>的时候因为没有父节点了,所以却不掉,就留下了导致内存泄漏

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题