我正在尝试使用Typeahead指令添加自动完成字段。 如果我像http://angular-ui.github.io/bootstrap/#/typeahead那样编写我的代码,那么它当然可以正常工作。
但是当我尝试在工厂中封装$ http调用时,我无法工作:
servicesModule.factory('LocationService', function($http) {
return {
getLocation : function (val) {
$http.get('http://maps.googleapis.com/maps/api/geocode/json', {params: { address: val, sensor: false }});
}
}
});
我打电话和以前完全一样:
$scope.getLocation = function(val) {
return LocationService.getLocation(val).then(function(res){
var addresses = [];
angular.forEach(res.data.results, function(item){
addresses.push(item.formatted_address);
});
return addresses;
});
};
在我的控制器中正确注入服务LocationService。 我猜这是我承诺或回调中缺少的东西?
因为该服务确实调用了我的后台,但是在firebug中我得到“LocationService.getLocation(...)未定义”
答案 0 :(得分:3)
在工厂中更改以下内容
getLocation : function (val) {
return $http.get('http://maps.googleapis.com/maps/api/geocode/json', {params: { address: val, sensor: false }});
}