我建议你在工厂编写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);
}]);
的
可能重复[如何返回从Ajax调用的响应?](http://stackoverflow.com/questions/14220321/how-to -return最响应从-AN-Ajax的呼叫) – raina77ow 2014-09-04 04:43:32