你想使用promises和$resource。
当$http
它本身返回一个承诺时,你所要做的就是链接到它的返回。就那么简单:
var promise = $http.get('mock/plane_urls.json').then(function(thisData) {
$scope.urls.content = thisData;
return 'something';
});
// somewhere else in the code
promise.then(function(data) {
// receives the data returned from the http handler
console.log(data === "something");
});
我在这里做了一个非常简单的小提琴。
但是如果你需要不断地调用这个信息,你应该通过服务公开它,这样任何人都可以获取它的结果并处理它。IE:
service('dataService', function($http) {
var requestPromise = $http.get('mock/plane_urls.json').then(function(d) {
return d.data;
});
this.getPlanesURL = function() {
return requestPromise;
};
});
// and anywhere in code where you need this info
dataService.getPlanesURL().then(function(planes) {
// do somehting with planes URL
$scope.urls.content = planes;
});
只是一个重要的说明。我嘲笑的这项服务将缓存并始终返回相同的数据。如果您需要多次调用此 JSON,那么您应该使用$resource。