2017-05-08 1 views
0

다음은 요점입니다. 웹 응용 프로그램의 차트를 작성하고 있습니다. 나는 자바의 웹 서비스에서 하나의 객체로부터 차트에 대한 정보를 얻는다. 가 여기에 기본적으로 내가 여러 컨트롤러에서 동일한 데이터를 사용하려면 어떻게해야합니까?

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

그리고 내 app.js

를 검색하고있어 JSON 개체의 형식입니다 (내 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 

같은 JSON 객체에 $ rootScope의 propertie를 설정하려고하지만 그것은 다른 컨트롤러에 정의되어 있지 않습니다. 답변 해 주셔서 감사합니다

+0

글로벌 컨트롤러가 호출 차트 서비스를로드하고 $ rootScope 변수에 해당 데이터를 저장하는 경우 추가로 사용할 수 있습니다 –

답변

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

아직 검색된 데이터가없는 경우 데이터 만로드되는 팩토리 서비스를 구현해야합니다.

https://docs.angularjs.org/guide/services가 그런 공장이 종속성으로 필요한 컨트롤러에서 공유 할 수있는 여기를 확인하십시오.

0

// 로컬 저장소 사용

시도해보십시오.

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를 통해 데이터를주고받는 것은 좋지 않습니다.

관련 문제