Asp.net mvc AngularJS+;更改路由时ASP.Net MVC ng重复内存问题
我正在使用Angular(1.1.5)作为ASP.NETMVC3项目的前端,在使用ng repeat时,浏览器内存消耗出现问题 看起来,当路由发生更改且ng view标记更新时,使用ng repeat时,旧dom元素不会被垃圾收集 设置如下:Asp.net mvc AngularJS+;更改路由时ASP.Net MVC ng重复内存问题,asp.net-mvc,angularjs,routing,angularjs-ng-repeat,ng-repeat,Asp.net Mvc,Angularjs,Routing,Angularjs Ng Repeat,Ng Repeat,我正在使用Angular(1.1.5)作为ASP.NETMVC3项目的前端,在使用ng repeat时,浏览器内存消耗出现问题 看起来,当路由发生更改且ng view标记更新时,使用ng repeat时,旧dom元素不会被垃圾收集 设置如下: _layout.cshtml页面,包含、脚本、css和带有angular应用程序链接的标题 index.cshtml部分使用布局页面,并包含一个标记 index.html,包含带有ng repeat的我的内容 index.html: <div ng
- _layout.cshtml页面,包含
、脚本、css和带有angular应用程序链接的标题 - index.cshtml部分使用布局页面,并包含一个
标记 - index.html,包含带有ng repeat的我的内容
index.html:
因此,反复单击标题中的链接(由于未定义特定的路由,因此始终会产生路由更改),然后调用垃圾收集器会在chrome timeline中产生以下结果: 正如您所看到的,内存基线不会返回到初始值,并且这会随着路由更改的增加而继续增加。此外,dom元素计数也在继续增加。查看堆快照,这些快照已分离,但仍然挂起 删除ng repeat会导致dom计数重置每个路由更改 有人知道为什么吗?如何防止这些元素四处游荡<div ng-controller="MyCtrl"> <div ng-repeat="item in items"> <p>Blah Foo Bar lorem ipsum gack</p> <hr /> </div> </div>
更新:我在VS2010中创建了一个新的MVC3项目,但没有这个问题。在VS2012中创建了一个新的MVC3项目,并完成了:/ 您使用的是哪个版本的AngularJS?该框架有一个漏洞,但是它只适用于嵌套的ng重复。1.1.5,也尝试了1.2rc2,但也是一样的。我已经创建了一个新的MVC3项目,在重新创建这个问题时遇到了困难,所以我想我可能在现有项目中遗漏了一些其他内容。var app = angular.module('MyApp', ['MyApp.content']) .config(['$routeProvider', function($routeProvider) { $routeProvider .otherwise({ templateUrl: '/index.html' }); }]); angular.module('MyApp.content', []); angular.module('MyApp.content') .controller("MyCtrl", ['$scope', function ($scope) { $scope.items = [{}, {}]; }]);