获取工厂的变量



我有个问题。我正在制作一个应用程序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];
});

$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];
   });
});

最新更新