AngularJs - 如何在templateUrl之间保留$ Http数据

时间:2014-09-04 14:37:28

标签: javascript angularjs

我已经为API发出了 $ http 请求,返回简单的json对象。

现在我需要以某种方式存储这些数据,因此$ http调用只会在所有模板网址上执行一次,并将粘贴到' MainController' 。 什么是最好的解决方案?

angular.module('myApp' ,['ngRoute'])

.factory('MasterData' , function($http ){
    var responseData;
    $http.get('https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA')
    .then(function(response){
         responseData = response.data;
          return responseData;
    })

})

.controller('MainController' , function($scope , MasterData ){

})

1 个答案:

答案 0 :(得分:1)

您可以使用服务并缓存$ http-request的结果。服务是单身,因此呼叫只会进行一次。

.service('MasterService', function ($http, $q) {
  var data;
  function getData() {
    var deferred = $q.defer()
    if (data) {
      deferred.resolve(data);
    } else {
      $http.get('someUrl')
        .then(function(response){
          data = response.data;
          deferred.resolve(data);
        });
    }

    return deferred.promise;
  }

  return {
    getData : getData
  };
})