편집 :이 답변은 주로 버전 1.0.X에 중점을 두었습니다. 혼란을 피하기 위해 오늘 2013-12-05 현재 모든 Angular 버전에 대한 최상의 답변을 반영하도록 변경되었습니다.
아이디어는 리턴 된 데이터에 대한 약속을 리턴하는 서비스를 작성한 후 컨트롤러에서이를 호출하여 $ scope 특성을 채우기위한 약속을 처리하는 것입니다.
서비스
module.factory('myService', function($http) {
return {
getFoos: function() {
//return the promise directly.
return $http.get('/foos')
.then(function(result) {
//resolve the promise as the data
return result.data;
});
}
}
});
컨트롤러 :
약속의 then()
방법을 처리하고 데이터를 가져옵니다. $ scope 속성을 설정하고 필요한 다른 작업을 수행하십시오.
module.controller('MyCtrl', function($scope, myService) {
myService.getFoos().then(function(foos) {
$scope.foos = foos;
});
});
인뷰 약속 해상도 (1.0.X 만 해당) :
여기에 원래 답변의 대상 인 Angular 1.0.X에서 약속은보기에 의해 특별한 대우를받습니다. 이들이 해결되면 해결 된 값이보기에 바인딩됩니다. 이것은 1.2.X에서 더 이상 사용되지 않습니다
module.controller('MyCtrl', function($scope, myService) {
// now you can just call it and stick it in a $scope property.
// it will update the view when it resolves.
$scope.foos = myService.getFoos();
});