【问题标题】:angularjs SPA - how to flush memory?angularjs SPA - 如何刷新内存?
【发布时间】:2017-11-08 15:40:22
【问题描述】:

我在我的网页中使用 angularjs 单页应用程序,

以下是 spa 构造函数的代码

app.config(config);
config.$inject = ['$stateProvider','$urlRouterProvider'];
function config($stateProvider,$urlRouterProvider){
    $stateProvider.state('dashboard',{
        url:'/{userID}/{testID}',
        templateUrl:'templates/dashboard.html',
        controller:'dashboardCtrl'      
    });
}

模板dashboard.html 显示谷歌图形和图表的数量。 在控制器dashboardCtrl 中,我使用$http 指令向服务器发出GET/POST 请求,并使用响应数据绘制谷歌图表。

以下是服务代码($http 请求)

app.service('getGraphData',getGraphData);
getGraphData.$inject = ['$http'];
function getGraphData($http){
    var obj = this;
    obj.getLatestData = function(testID){
        return $http({
            method:'GET',
            url:'/rest/getGraphDataForTestID',
            params:{testID:testID}
        }
        ).then(function(response){
            // success response
            return(response.data);
        });
    }
    return obj;
}

控制器代码 -

app.controller('dashboardCtrl',dashboardCtrl);
dashboardCtrl.$inject = ['$scope','$rootScope','getGraphData','$stateParams'];
function dashboardCtrl($scope,$rootScope,getGraphData,$stateParams){
    var testID = $stateParams.testID;
    var userID = $stateParams.userID;
    var graphData = null;
    getGraphData.getLatestData(testID).then(function(response){
        $scope.testname = response.data.testname;
        $scope.tag = response.data.tag;
        ..
        ..
        $scope.results = response.data;
        graphData = response.data;
        drawBarChart(graphData);
        drawPieChart(graphData);
    });
}

我的索引页中有很多链接,如下所示

<a  ui-sref = "dashboard({userID:1,testID:197})"><b>dashboard-userid:1,graphs:197</b></a>
<a  ui-sref = "dashboard({userID:1,testID:198})"><b>dashboard-userid:1,graphs:198</b></a>

此设置在一段时间内运行良好,但一段时间后我收到浏览器错误消息“浏览器内存不足,无法显示此网页

也许是因为 angularjs 正在保存以前的 $scope$rootScope 变量,并且在重新加载模板时还会创建新变量... 或者只是 JavaScript 变量没有被删除...... (但我没有使用全局变量——所有变量都在控制器函数中声明,应该与该函数具有相同的生命)

我如何清除/刷新这些 $scope/$rootScope 变量并释放内存... 我如何分析我的特定页面的内存使用情况..?? 请帮忙...

【问题讨论】:

    标签: javascript angularjs memory


    【解决方案1】:

    有一个 chrome 扩展程序可以让您分析 Angular 应用程序的性能 - Batarang

    它还显示$scope$rootScope 变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      • 2014-08-28
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      相关资源
      最近更新 更多