我已经为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 ){
})
答案 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
};
})