简体   繁体   中英

AngularJS Factory, Service and HTTP Usage

I am new to learning angular and having trouble understand some of the basics.

I have my controller line shown below:

   $scope.test =  fileLoader.loadFile();

And my factory service shown below:

angular.module('myWellnessTrackerApp')
  .factory('fileLoader', function($http) {

    return{
      loadfile : function(fileLoc){
        $http.get('data/sideEffects.json').success(function(data) {
          // you can do some processing here
          return data;
        });
      }
    };

  });

Which throws an error. But when my controller line is

   $scope.test =  fileLoader.data;

And my service is

angular.module('myWellnessTrackerApp')
  .factory('fileLoader', function($http) {

    var obj = {content:null};


    $http.get('data/sideEffects.json').success(function(data) {
      // you can do some processing here
      obj.content = data;
    });

    return obj;
  });

Which i don't understand and I would like to be able to understand how to make services in particularly a HTTP service wrapper for requesting a page or local file and having it returned.

Thanks

You can't just do

$scope.test =  fileLoader.loadFile();

loadFile is an async call, and you can't return from that! You can use .then to continue the promise pattern. Your factory would change to:

loadFile : function(fileLoc){
    return $http.get('data/sideEffects.json').then(function(result) {
        // you can do some processing here
        return result.data;
    });
}

And your controller:

fileLoader.loadFile().then(function(data) {
    $scope.test = data;
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM