AngularJS : returning data from service to controller

后端 未结 2 1594
悲&欢浪女
悲&欢浪女 2020-12-30 12:57

I am trying to create a service to get json and pass it to me homeCtrl I can get the data but when a pass it to my homeCtrl it always returns undefined. Im stuck.

M

相关标签:
2条回答
  • 2020-12-30 13:28

    This is an example how I did for my project, it work fine for me

    var biblionum = angular.module('biblioApp', []);//your app
    biblionum.service('CategorieService', function($http) {
    
    
        this.getAll = function() {
    
            return $http({
                method: 'GET',
                url: 'ouvrage?action=getcategorie',
                // pass in data as strings
                headers: {'Content-Type': 'application/x-www-form-urlencoded'}  // set the headers so angular passing info as form data (not request payload)
            })
                    .then(function(data) {
    
                        return data;
    
    
                    })
    
    
        }
    
    
    });
    
    biblionum.controller('libraryController', function($scope,CategorieService) {
      
        var cat = CategorieService.getAll();
        cat.then(function(data) {
            $scope.categories = data.data;//don't forget "this" in the service
        })
    
      });

    0 讨论(0)
  • 2020-12-30 13:39

    You should return promise from getResponders function, & when it gets resolved it should return response.data from that function.

    Factory

    var myService = angular.module("xo").factory("myService", ['$http', function($http) {
        return {
            getResponders: function() {    
                return $http.get('myUrl')
                .then(function(response) {
                    console.log("coming from servicejs", response.data);
                    //return data when promise resolved
                    //that would help you to continue promise chain.
                    return response.data;
                });
            }
        };
    }]);
    

    Also inside your controller you should call the factory function and use .then function to get call it when the getResponders service function resolves the $http.get call and assign the data to $scope.gotData

    Code

     $scope.goData = function(){
         myService.getResponders.then(function(data){
              $scope.gotData = data;
         });
    
     };
    
    0 讨论(0)
提交回复
热议问题