2013-01-24 6 views
1

내 MainCtrl이 ($ routeProvider에서 호출을하고 또한 HTML에서) :컨트롤러를 결합하려면 어떻게해야합니까? AngularJS?

function MainCtrl($scope, $routeParams){ 
    //send data(see below) to AngularTemplate for apdate page 
} 

나는 모든 데이터 가져 오기 내 기능이 있습니다

function getData($scope, $http){ 
    /* 
    * Nav Data(here my navigate-structure fo site) 
    */ 
    $http({method: 'GET', url: 'data/main.json'}). 
    success(function(data){ 
    //work with data and send it to MainCtrl 
    }); 
    /* 
    * News Data(Here my news) 
    */ 
    $http({method: 'GET', url: 'data/news.json'}). 
    success(function(data){ 
    //work with data and send it to MainCtrl 
    }); 
} 

지금 나는 내 방법을 보낼 수 있습니다 이해를 $ on과. $ broadcast를 사용하여 한 Ctrl에서 다른 데이터로 데이터를 전송할 수 있습니다. 하지만 getData 각도 컨트롤러 (js 함수입니다) 및 내 args ($ 범위 및 $ http) understend 않습니다. 제게 말해서, getdata를 첫 번째 페이지로드하고 MainCtrl에 데이터를 보낼 수있는 방법을 말해주십시오. 또한 알고 계시다면, MainCtrl로 무엇을 할 수 있는지 말씀해주십시오. 그는 $ routeProvider에서만 호출합니다. 이제 처음에는 html (ng-controller)를 호출하고 $ routeProvider를 호출했습니다.

답변

0

각도 컨트롤러 내에 getData 함수를 넣습니다. 와는 $ 범위를 이해하고 $ HTTP 서비스

또는 mainCtrl의) (A의 프로토 타입 방법 설정을 ....하고

 MainCtrl.prototype = { 
     set = function(value){ 
      $scope=value; 

     } 

    } 
+0

Thnx 이것은 내 컨트롤러 간의 간단한 공유를위한 좋은 아이디어입니다. 하지만 내 기능을 각도 조절기로 변환하려면 어떻게해야합니까? mainCtrl은 항상 windov.location.hash를 변경할 때 호출되는 beCause getCommand에 getData를 삽입하고 싶지 않습니다. –

+1

기본적으로 하나의보기에 대해 하나의 컨트롤러가 있습니다. –

+1

html 태그에 컨트롤러를 루트 컨트롤러로 지정하면 해당 컨트롤러에서 브로드 캐스트 할 수 있습니다. 이 하위 컨트롤러. 이것이 도움이되기를 바랍니다. –

0

데이터를 랩에 = 값 $ scope.var 전달 서비스에서 코드를 가져 오는 중. 또한 위의

의 예 컨트롤러로 사용자가 만든 서비스를 (예를 들어, myService) 주입하는 방법을 보여줍니다 다음은이 작업을 수행하는 방법을 보여이 개 좋은 SO 답변입니다 . 이 서비스를 필요한만큼의 컨트롤러에 삽입 할 수 있습니다. Angular 서비스는 싱글 톤 (singleton)이기 때문에 몇 개의 컨트롤러가 서비스에 삽입 되더라도 데이터 가져 오기 코드의 인스턴스는 하나뿐입니다.

귀하의 서비스는 cache the results of the $http request 일 수도 있습니다.

관련 문제