得到一个工厂的变量

时间:2015-03-24 14:49:22

标签: javascript angularjs ionic-framework angular-services

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

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