API 호출이 훌륭하게 작동하지만 여러 컨트롤러에서이 API를 사용하여 자체 서비스로 이동했습니다. 저는 고전적인 Scope 문제 나 Angular의 다이제스트주기에 대한 오해처럼 보입니다.AngularJS, 서비스를 사용하여 HTTP 데이터를 캡처하고 컨트롤러에 바인딩하는 방법은 무엇입니까?
'use strict';
myApp.factory('Stuff',['$http', function ($http) {
var Stuff = {};
Stuff.data = {};
Stuff.api = 'http://localhost:8080/api/';
Stuff.getStuff = function() {
var http_stuff_config = {
method: 'GET',
url: Stuff.api + 'stuff/'
};
$http(http_stuff_config).then(function successCallback(response) {
Stuff.data = (response.data);
console.log(Stuff.data); // Returns populated object.
},function errorCallback(response) {
console.log(response.statusText);
});
};
Stuff.getStuff();
console.log(Stuff.data); // Returns empty object.
return Stuff;
}]);
myApp.controller('appController', ['$scope','Stuff',function($scope,Stuff) {
$scope.stuff = Stuff;
console.log($scope.stuff.data); // Returns empty object.
$scope.stuff.getJobs();
console.log($scope.stuff.data); // Returns empty object.
}]);
큰 단서가 있습니다. 위해서는 전술의 필수 출력은 메소드를 호출 한 후에 컨트롤러
- 빈 목적) 컨트롤러 메소드 실행) 그래서
에
당신은 $ HTTP 데이터를 캡처 찾으시는 것입니까? –