공장에서 API 호출을 작성하고 데이터가 필요한 컨트롤러에서 해당 서비스를 호출하는 것이 좋습니다. 여러 컨트롤러에서 동일한 서비스를 호출 할 수도 있습니다.
내 이해에 따라, 이것이 당신의 요구 사항이되기를 바랍니다. 그렇지 않다면 알려주세요. 최선을 다할 것입니다.
당신은 plunkr 코드를 참조 할 수 있습니다 http://plnkr.co/edit/G9MkVMSQ4VjMw8g2svkT?p=preview
angular.module('mainModule', [])
.factory('apiCallService', ['$http', '$q', '$log',
function ($http, $q, $log) {
var instance = {};
var config = null;
instance.apiCallToServer = function (config) {
var deferred = $q.defer();
$http(config)
.success(function (data, status, header, config) {
deferred.resolve(data);
})
.error(function (data, status, header, config) {
deferred.reject(status);
});
return deferred.promise;
};
return instance;
}])
.controller('FirstCtrl', ["$scope", "$log", "$location", "apiCallService",
function ($scope, $log, $location, apiCallService) {
var config = {
method: "get",
url: "/path"
};
$scope.successCallback = function (data) {
$log.log("success.");
$scope.data = data;
//data will be stored in '$scope.data'.
};
$scope.failureCallback = function (status) {
$log.log("Error");
};
apiCallService
.apiCallToServer(config)
.then($scope.successCallback, $scope.failureCallback);
}]);
의
중복 가능성 [아약스의 응답 전화를 반환하는 방법?] (http://stackoverflow.com/questions/14220321/how-to -return-the-a-ajax-call로부터의 응답) – raina77ow