我有一个带有3个屏幕的AngularJs应用程序,因此该应用程序使用ui-router组件每X秒在这3个屏幕之间进行路由。
$stateProvider
.state("page", {
url: "/:pageId/:pageType",
template: pageTemplate,
controller: "contentCtrl",
resolve: {
contentSolver: function (resolveService, $stateParams) {
resolveService.solveData($stateParams.pageId, $stateParams.pageType);
}
}
})
还有
$state.go('page', {
pageId: $stateParams.pageId,
pageType: pageType
});
我有一个名为resolveService的服务,我从服务器获取页面内容,然后将内容传递给控制器。
每次屏幕更改都会发生内存泄漏(如果我不在页面之间进行切换,则不会出现内存泄漏)。
我发现了这一点
每次屏幕更改都会发生内存泄漏(如果我不在页面之间进行切换,则不会出现内存泄漏)。
在每个开关上,我都请求获取一些图片,但是如果我在同一页面上进行两次开关,则我将得到2张相同的图像,依此类推。
有什么办法可以删除旧版本?
Chrome开发工具中的“性能”标签。
节点数量迅速增加,我需要检查这种情况吗?
我可以使用任何工具来查找泄漏吗?我尝试过Chrome扩展程序,但Dynatrace并没有成功,但它们仅支持nodejs。
如果您有任何想法,请告诉我:),谢谢!
答案 0 :(得分:1)
您要用x秒的时间路由这些页面,您需要销毁调用您正在使用的过渡的函数(即过渡onSuccess,onStart),销毁一旦过渡开始,为什么,因为它将继续监听每次转换都会导致多次出现响应。
$scope.$on('$destroy',functionName);