0

두 컨트롤러간에 lastFM API에서 가져온 데이터를 공유하려고합니다.Angularjs - 두 컨트롤러간에 API 데이터 전달

나는 공장 노력했습니다하지만 난 그것에 그립을 얻을하지 않습니다 ...

angular.module('myApp') 
    .factory('getData', function($http, $scope, $routeParams) { 
    $http.get(lastfm + "&method=artist.getInfo&mbid=" + $routeParams.mbid).success(function(data) { 
     console.log(data) 
    }); 
    }) 
    .controller('artistCtrl', function ($scope, $routeParams, $http, getData) { 
    console.log(getData.data); 
    }) 
    .controller('artistInfoCtrl', function ($scope, $routeParams, $http, getData) { 
    console.log(getData.data); 
    }) 

그래서 내가 어떻게 이것을 해낼 관리합니까?

답변

0

귀하의 공장 당신은 아마

var something = getData(); 

말하여 공장을 호출하고 데이터

$http.get(lastfm + "&method=artist.getInfo&mbid=" + $routeParams.mbid).success(function(data) { 
     return data; 
    }); 
1

가이 있다는 $의 HTTP 호출 반환의 성공 핸들러를 만들 필요가 어떤 속성 데이터가 없습니다 몇 가지 :

1) 비동기 데이터를 처리하고 있다는 것을 알고 있으므로 컨트롤러의 데이터를 즉시 읽을 수 있다고 기대하지 마십시오.

2) 공장에서 컨트롤러가 호출 할 수있는 기능을 반환하도록하십시오. 이 함수는 결국 (모든 것이 잘된다면) 데이터로 해결 될 약속을 반환해야합니다.

3) 컨트롤러가 팩토리에서 반환 된이 함수를 호출 할 수 있으며 리턴 된 약속의 .then()에서 실제로 데이터로 작업 할 수 있습니다.

제가 조언 한 것은 위에서 설명한 용어에 대한 약간의 연구입니다. 아직 익숙하지 않은 경우에 한합니다. 그들을 이해하면 각성을 통해 훨씬 더 많은 것을 성취 할 수 있습니다.

관련 문제