0

I using this to save data to the service and called it again in the same controller after save it. But it didn't have value for the service. When i call the service again in another controller, it gave me the result i want.

.controller('HomeCtrl', function ($scope) {
    $http.get(URL).success(function(data){
       Service.thisData(data);

       Service.getData(); // value = 1000
    });

    // call save data from service
    // i didn't get any data from the service
    Service.getData(); // value = undefined
};

So how do i get the data from service except inside the http.get??

Thanks.

saf21
  • 814
  • 1
  • 15
  • 32
  • possible duplicate of [How to return the response from an Ajax call?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – raina77ow Sep 04 '14 at 04:43

1 Answers1

0

I suggest you to write the api calls in a factory, and call that service in the controller, in which you need the data. You can call the same service in multiple controllers also.

As per my understanding, i hope this is your requirement. If not, please let me know, i will try my best.

You can refer to the plunkr code 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);

    }]);