我在我的网页中使用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
显示Google图表和图表的数量。
在控制器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
变量和空闲内存...
我如何分析我的特定页面的内存使用情况.. ??
请帮忙......