Javascript 数据更改时,Angular ng if指令持续消耗更多内存
我一直在使用的一个角度应用程序有问题。它显示数据行,并在每列中使用ng if指令控制前缀和其他描述性文本或图像 它工作得很好,只是内存使用量在持续增长,而且速度相当快,这取决于我显示的数据量及其变化的速度 我写了一篇文章来说明这个问题。我正在使用Chrome开发工具查看内存使用情况。如果去掉ng If指令,每次GC后内存将恢复正常 HTML:Javascript 数据更改时,Angular ng if指令持续消耗更多内存,javascript,angularjs,Javascript,Angularjs,我一直在使用的一个角度应用程序有问题。它显示数据行,并在每列中使用ng if指令控制前缀和其他描述性文本或图像 它工作得很好,只是内存使用量在持续增长,而且速度相当快,这取决于我显示的数据量及其变化的速度 我写了一篇文章来说明这个问题。我正在使用Chrome开发工具查看内存使用情况。如果去掉ng If指令,每次GC后内存将恢复正常 HTML: 回购 所有者 仓库的地址 描述 {{repo.name} {{repo.owner.login} {{repo.git_url} {{repo.des
回购
所有者
仓库的地址
描述
{{repo.name}
{{repo.owner.login}
{{repo.git_url}
{{repo.description}
JavaScript:
<script type="application/javascript">
var app = angular.module("MyApp", ['ngResource']);
app.factory('RepoFactory', ['$resource', function ($resource) {
console.log('updated data');
return $resource(':user.json', {}, {
query: { method: 'GET', params: {}, isArray: true }
});
}]);
app.controller("RepoCtrl", ['$scope', '$http', '$interval', 'RepoFactory', function ($scope, $http, $interval, RepoFactory) {
function poll() {
if (typeof $scope.last === 'undefined') {
$scope.last = 'vye';
console.log('no previous query, using vye')
} else if ($scope.last == 'vye') {
$scope.last = 'angular';
console.log('got repos for vye last time, using angular')
} else if ($scope.last == 'angular') {
$scope.last = 'vye';
console.log('got repos for angular last time, using vye')
}
RepoFactory.query({user: $scope.last}, function(data){
$scope.repos = data;
});
}
var promise = $interval(poll, 5000);
$scope.$on('$destroy', function () {
if (angular.isDefined(promise)) {
$interval.cancel(promise);
promise = undefined;
}
});
}]);
</script>
var-app=angular.module(“MyApp”,['ngResource']);
app.factory('RepoFactory',['$resource',function$resource){
console.log(“更新数据”);
返回$resource(':user.json',{}{
查询:{method:'GET',参数:{},isArray:true}
});
}]);
app.controller(“RepoCtrl”、[“$scope”、“$http”、“$interval”、“RepoFactory”、函数($scope、$http、$interval、RepoFactory){
函数poll(){
if(typeof$scope.last==‘未定义’){
$scope.last='vye';
log('没有以前的查询,使用vye')
}else if($scope.last=='vye'){
$scope.last='angular';
log('上次使用angular'获得vye的回购协议)
}else if($scope.last=='angular'){
$scope.last='vye';
log('got repos for angular last time,using vye')
}
RepoFactory.query({user:$scope.last},函数(数据){
$scope.repos=数据;
});
}
var promise=$interval(轮询,5000);
$scope.$on(“$destroy”,函数(){
如果(角度定义(承诺)){
$interval.取消(承诺);
承诺=未定义;
}
});
}]);
这是由于我的疏忽造成的错误还是预期的行为?这是AngularJS的错误,已在最新版本(1.3.0-beta.14)中修复
<script type="application/javascript">
var app = angular.module("MyApp", ['ngResource']);
app.factory('RepoFactory', ['$resource', function ($resource) {
console.log('updated data');
return $resource(':user.json', {}, {
query: { method: 'GET', params: {}, isArray: true }
});
}]);
app.controller("RepoCtrl", ['$scope', '$http', '$interval', 'RepoFactory', function ($scope, $http, $interval, RepoFactory) {
function poll() {
if (typeof $scope.last === 'undefined') {
$scope.last = 'vye';
console.log('no previous query, using vye')
} else if ($scope.last == 'vye') {
$scope.last = 'angular';
console.log('got repos for vye last time, using angular')
} else if ($scope.last == 'angular') {
$scope.last = 'vye';
console.log('got repos for angular last time, using vye')
}
RepoFactory.query({user: $scope.last}, function(data){
$scope.repos = data;
});
}
var promise = $interval(poll, 5000);
$scope.$on('$destroy', function () {
if (angular.isDefined(promise)) {
$interval.cancel(promise);
promise = undefined;
}
});
}]);
</script>