angularjs - 如何在angularjs中将http数据从服务传递到控制器
问题描述
var locationListCtrl=function($scope, loc8rData){
$scope.message = "Searching for nearby places";
loc8rData
.success(function(data){$scope.message = data.length > 0 ? "" : "No locations Found";
$scope.data = { locations: data };
})
.error(function(e){
$scope.message = "Sorry, Something has gone wrong";
console.log(e);
});
};
var loc8rData = function ($http){
return $http.get('/api/locations?lng=33.7741195&lat=-13.9626121&maxDistance=20');
};
解决方案
几点:
考虑到,当您收到一个响应时,
$http
它是常见响应(带有状态、标题等)。因此,如果您想访问您的数据,您必须执行以下操作:response.data
通常,当您拥有一项服务时,您会定义多个端点。因此,您可以返回具有多个请求的对象。
检查这个小样本是否有效:https ://plnkr.co/edit/FNxEeVZti6D1wmLe
.service('PokeApi', function($http) {
return ({
getPokemon: function (name) {
return $http({
method: 'GET',
url: 'https://pokeapi.co/api/v2/pokemon/' + name,
headers: { 'Content-Type': 'application/json' }
});
}
})
})
控制器很简单:
.controller('MainCtrl', function($scope, PokeApi) {
$scope.name = 'Plunker';
PokeApi.getPokemon('pikachu').then(function (response) {
$scope.pokemon = response.data;
});
});
推荐阅读
- html - 如何使用animejs在Html5画布中实现移动字母动画
- wso2 - 我们可以在 x-mediation-script 中使用 $ref 吗?
- java - Spring boot 2.0.5项目CORS问题:将CORS头添加到http响应中
- java - 2个具有相同ID的类如何更改属性并在两者中反映
- mariadb - MariaDB 10.3 序列编号的间隙
- react-native - 重定向到另一个页面之前的异步存储
- ruby-on-rails - 是否可以将文本列更改为整数支持的枚举而无需停机?
- javascript - “服务器上的子类别响应问题”
- wordpress - 为什么 wp_redirect() 向我显示标头信息 - 标头已由..发送?
- python-3.x - 匹配长度不等的字符列表