Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数据更改时,Angular ng if指令持续消耗更多内存_Javascript_Angularjs - Fatal编程技术网

Javascript 数据更改时,Angular ng if指令持续消耗更多内存

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

我一直在使用的一个角度应用程序有问题。它显示数据行,并在每列中使用ng if指令控制前缀和其他描述性文本或图像

它工作得很好,只是内存使用量在持续增长,而且速度相当快,这取决于我显示的数据量及其变化的速度

我写了一篇文章来说明这个问题。我正在使用Chrome开发工具查看内存使用情况。如果去掉ng If指令,每次GC后内存将恢复正常

HTML:


回购
所有者
仓库的地址
描述

{{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>