Я создаю службу для возвращения координат местоположения. Но мне нужно каким-то образом вернуть значение.ТипError: Не удается прочитать свойство «success» undefined
angular.module('google.maps', [])
.factory('geocode', ['$http', 'GOOGLE_MAPS_CREDENTIALS', function ($http,GOOGLE_MAPS_CREDENTIALS) {
return {
getCoords: function(addr1, zip) {
$http.get('https://maps.googleapis.com/maps/api/geocode/json?address='
+encodeURIComponent(addr1+','+zip)+'&sensor=false'
+'&key='+GOOGLE_MAPS_CREDENTIALS.API_KEY);
}
}
}])
.value('GOOGLE_MAPS_CREDENTIALS', { API_KEY: '_____________' });
После этого у меня есть контроллер вызова этой функции, как, например:
.controller('AddrNewCtrl', ['$scope','$state','$stateParams','geocode','$rootScope','Address',
function($scope, $state, $stateParams, geocode, $rootScope, Address) {
$scope.address = {
userId: {"__type":"Pointer","className":"_User","objectId":$rootScope.user.id}
};
$scope.create = function() {
geocode.getCoords($scope.address.address1, $scope.address.zipCode)
.success(function(data) { // <-- this is where the console error is.
var lat = data.results[0].geometry.location.lat;
var lng = data.results[0].geometry.location.lng;
$scope.address.location = new Parse.GeoPoint({latitude:lat,longitude:lng});
});
Address.create($scope.address)
.success(function(data) { $state.go('tabs.address-list'); });
};
}])
Проблема заключается в том, что, когда я называю успехом, я получаю TypeError:
TypeError: Cannot read property 'success' of undefined
Там есть небольшая разница между тем, как я реализую эту услугу по сравнению с любой другой услугой, и когда я получаю все значения, ожидаемые при вызове функции . функция в контроллере.
Я ищу одного из двух ответов:
- Почему
success
обратного вызова, возвращающего ошибку? - Как я могу просто вернуть объект «Координаты» при вызове службы
geocode
?
Это не «успех» обратный вызов сам по себе, что это предмет ошибок. Ошибка означает, что вызов 'getCoords()' ничего не возвращает. – Pointy
вы не возвращаете обещание на getCoords, вы должны иметь 'return $ http.get' –
Вау, спасибо. Это разрешило @Pointy, не стесняйтесь вставить это в ответ, и я дам вам кредит на это. –