angularjs的scope会一直缓存在jqcache里

我们在用angularjs做一个单页应用,其中有几个子页面会一直保持循环播放(即用ngview轮流切换几个scope)。但后来我发现页面每切换一次内存都会增长,大概几个小时之后浏览器就崩溃了。经过内存分析,可以确认有很多scope会缓存在jqcache里,然后我去找源代码,发现是以下这段导致的问题:

compile.$$addScopeInfo = debugInfoEnabled ? function $$addScopeInfo($element, scope, isolated, noTemplate) {
      var dataName = isolated ? (noTemplate ? '$isolateScopeNoTemplate' : '$isolateScope') : '$scope';
      $element.data(dataName, scope);} : noop;

我翻遍其他源代码,也没发现可以清除这部分缓存的代码。请问有什么办法可以解决这个问题?
PS: angularjs的版本为1.5.8,jquery版本为1.7


交互式爱情
浏览 408回答 1
1回答

UYOU

这是个好问题,并且都研究到这个份上了,赞一个!这看起来是jq的锅啊,.data方法的缓存。解决方法不知道题主找到没,我的解决思路是:在ctrl或者directive等销毁的时候$destory是手动调用相关jq的removeData方法,移除掉$ele上的data缓存。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript