Angular js工厂调用“不是函数”

时间:2014-03-11 10:28:48

标签: angularjs angular-ui-typeahead

我正在尝试使用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(...)未定义”

1 个答案:

答案 0 :(得分:3)

在工厂中更改以下内容

getLocation : function (val) {
     return $http.get('http://maps.googleapis.com/maps/api/geocode/json', {params: { address: val, sensor: false }});
 }