我有问题。我正在创建一个应用程序AngularJS,并在控制器中注入工厂时给我未定义。 问题是我打电话给工厂。我无法获得响应的价值。
厂:
app.factory('mapFactory', function($http){
return {
getCoordinates: function() {
return $http.get("http://xxxx/map.php?callback=JSON_CALLBACK").then(function(response){
return response.data;
console.log(response.data); // "37.344/-4.3243"
});
}
}
});
控制器:
app.controller('MapCtrl', function(mapFactory) {
var coordinates;
mapFactory.getCoordinates().then(function(response){
return coordinates = response;
});
console.log(coordinates); // undefined
var elem = coordinates.split('/'); // Cannot read property 'split' of undefined
latitude = elem[0];
longitude = elem[1];
});
答案 0 :(得分:0)
$http.get
调用是异步的,因此在get requerst完成时将设置coordinates = response
,但以下代码将立即执行。您可以将其余代码移到then
函数中以使其正常工作
app.controller('MapCtrl', function(mapFactory) {
var coordinates;
mapFactory.getCoordinates().then(function(response){
return coordinates = response;
console.log(coordinates);
var elem = coordinates.split('/');
latitude = elem[0];
longitude = elem[1];
});
});