私はangularjs SPA - メモリをフラッシュする方法は?
には、次の、私のWebページでangularjs単一ページアプリを使用していますが、Googleのグラフやチャートの数が表示されdashboard.html
スパコンストラクタ
app.config(config);
config.$inject = ['$stateProvider','$urlRouterProvider'];
function config($stateProvider,$urlRouterProvider){
$stateProvider.state('dashboard',{
url:'/{userID}/{testID}',
templateUrl:'templates/dashboard.html',
controller:'dashboardCtrl'
});
}
テンプレートのコードです。 コントローラーdashboardCtrl
では、$http
指示文を使用してサーバーにGET/POST要求を行い、応答データを使用してグーグルグラフをプロットします。
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>
このセットアップで、次のようなリンクの数を持っている -
次は、サービス($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;
}
コントローラコードのコードですしばらくの間うまくいきますが、しばらくするとブラウザのエラーが発生しますメッセージangularjsが前$scope
と$rootScope
変数を保存し、テンプレートが再ロードされたときにも、新しいものを作成しているので... または単にJavaScriptの変数は削除取得されていませんたぶん
「ブラウザがこのWebページを表示するためにメモリを使い果たしました」 ... (しかし、私はグローバル変数を使用していない - すべては、コントローラの関数内で宣言され、その関数と同じ生活をしているはずである)
をどのように私はクリア/これら$scope/$rootScope
変数や空きメモリをフラッシュしない... 方法私は特定のページのメモリ使用量を分析できますか? 助けてください...
ありがとうございます –