Sahe
Sahe

Reputation: 163

How to return data from Factory Angular?

How to return data from factory?

.factory('albumService', ['$http', function($http) {

            return {
                getAlbums: function (type) {

                    var request = $http({
                        method: "POST",
                        url: "/albums/getalbums",
                        data: $.param({ type : type }),
                        headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
                    });

                    request.success(function (data) {
                        return data;
                    });
                }
            };
        }])

I need return data from factory in section

request.success(function (data) {
      return data;
});

That result will be in $scope.albums = albumService.getAlbums('select');

Upvotes: 1

Views: 542

Answers (1)

nitin
nitin

Reputation: 3787

Service :

    .factory('albumService', ['$http', '$q, function($http,$q) {
        return {
            getAlbums: function (type) {
                var albumPromise = $q.defer();
                $http({
                    method: "POST",
                    url: "/albums/getalbums",
                    data: {'type':type},
                    headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
                })
                 .success(function(data){
                    return albumPromise.resolve(data);
                  })
                 .error(function(error){
                    return albumPromise.reject(error);
                 })
               return albumPromise.promise;
            }
        };
    }])

Inside yr Controller call it like this.

albumService.getAlbums('select')
       .then(function(data){
           $scope.albums=data; 
        }, function(error){
           console.log('failed'+error);  
        })

Upvotes: 3

Related Questions