2017-05-08 75 views
0

這裏有一點:我正在爲Web應用程序構建圖表。我從java中的web服務獲取單個對象的圖表信息。 這裏基本上是JSON對象的我檢索如何在多個控制器中使用相同的數據?

{ "chart1Info": [9, 42, 43, 7, 20], "chart2Info": [45, 3, 21, 34] (...and so on)} 

而且我app.js格式(在我的AngularJS代碼)我有7個控制器爲7個圖表。在每個控制器我打電話給服務,以獲得與所有信息相同的對象。

app.controller('chart1', function($scope, $http){ 
    $http.get('//WEBSERVICE_PATH').then(function(response) { 
     $scope.chartData = response.data; //The JSON object 
     //Then I build the charts...  
    }); 
}); 

我想要做的僅僅是調用服務1時,保存對象,因爲它是每個人對同一對象我的控制器都可以使用它。 我試圖用一個主控制器envolving所有其他控制器和類似

$rootScope.chartData = response.data; 
//Inside the $http.get() function 

$ rootScope的propertie設置爲JSON對象,但它在其它控制器不確定的。 感謝您的答案

+0

當全局控制器加載調用圖表服務並將這些數據存儲在$ rootScope varible中時,您可以將其用於進一步 –

回答

1

您需要在您的控制器中添加$ rootScope依賴項,否則$ rootScope將無法正常工作。

app.controller('chart1', function($scope, $http,$rootScope){ 
    $http.get('//WEBSERVICE_PATH').then(function(response) { 
     $scope.chartData = response.data; //The JSON object 
     //Then I build the charts...  
    }); 
}); 
0

//使用localstorage

試試這個。

app.controller('chart1', function($scope, $http){ 
    $http.get('//WEBSERVICE_PATH').then(function(response) { 
     localStorage.chartData = response.data; //The JSON object 
     $scope.chartData = localStorage.chartData; 
     //Then I build the charts...  
    }); 
}); 

然後你可以在任何控制器中調用。像這樣

app.controller('chart2', function($scope){ 
     $scope.chartData = localStorage.chartData; 

    }); 
0

試圖實現工廠服務,並把檢查該值的變量和取值僅當該變量不具有價值。

以其它方式實現家長控制並有調用API,並將其存儲到一個變量,並呼籲在所有子控制器,數據

0

你可能想要做的是創建一個 angular service加載數據,然後使用angular event system與圖表控制器通信完成數據讀取事件,以便控制器可以查詢服務以顯示新數據。

通過rootScope傳遞數據不是一個好習慣。

相關問題