【发布时间】:2014-11-12 13:09:36
【问题描述】:
所以不知何故,我在 JS 中造成了内存泄漏。好吧,我只是不断调整页面窗口的大小,然后 buum,86% 的内存使用率。内存不足 16GB。在我关闭所有东西后,我不得不重新启动我的电脑,因为它仍然显示 72% 的使用率。系统只占17%。
所以我真的不明白那里发生了什么,我只想在用户调整窗口大小时做出反应,因为如果宽度小于 640 像素,我会更改布局。
但是是的,这是我的代码。
索引.html:
<div id="wrapper" ng-controller="AppCtrl" resize>
<div class="left-side" ng-class="{ fullw: smallR }">random content</div>
<div class="right-side" ng-class"={ fullw: smallR }">random content2</div>
</div>
我的想法是,我有左侧和右侧,在屏幕宽度低于 640px 之后,我通过附加 .fullw { width: 100% } 样式将它们推到彼此下方。
我的指令:
.directive('resize', function ($window) {
return function (scope, element, attr) {
var w = angular.element($window);
scope.$watch(function () {
return {
'h': w.height(),
'w': w.width()
};
}, function (newValue, oldValue) {
if(newValue.w <= 640) {
scope.smallR = 1;
} else {
scope.smallR = 0;
}
}, true);
w.bind('resize', function () {
scope.$apply();
});
};
})
它最终可以工作,但是如果我开始整天调整大小来玩它,它就会开始使用大量的 RAM...
提前致谢
【问题讨论】:
-
你有没有这样的错误。 “达到 10 次 $digest() 迭代。正在中止”?
-
这里你不需要
$watch,你已经有resize事件了。而且你根本不应该在这里使用 Javascript,用户媒体查询。 -
在 dfsq 是的。在迈克尔祖切塔并不总是,但在某些时候是的。有点随机 o.o 。在 dfsq 所以不要使用 scope.$watch 并且喜欢: var w... if ... else... w.bind ... 作为 js 中的新手,我很难理解 Angular 指令。
标签: javascript html angularjs