0

Я пытаюсь отправить значение из своего представления в контроллер, используя функцию внутри ng-click, затем используйте это значение, чтобы передать его на мою фабрику, которая goint вытащить данные из ссылки rest api, но значение им не посылать возвратный ничего без ошибок, вот мой кодИспользование фабрики в контроллере return undefined

<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script> 
<script> 
var app = angular.module('myApp', []); 
app.controller('myCtrl', function($scope, idService) { 
    $scope.getSo = function (id){ 
     $scope.myIDs = idService.getID(id); 
    }; 
}); 
app.factory('idService', function($http,$q) { 
    var oGetID = {}; 
    oGetID.getID = function(id) { 
     var deferred = $q.defer(); 
     $http.get('http://citysdk.dmci.hva.nl/CitySDK/pois/'+id).then(function(response){ 

      deferred.resolve(response.data); 
    }); 
    return deferred.promise; 
    }; 
    return oGetID; 
}); 

</script> 
</head> 
<body> 
    <div ng-app="myApp" ng-controller="myCtrl"> 
     <a href="#" ng-click ="getSo('52527290c5cddb0a7cb654ca');">send variable</a> 
     {{myIDs.location.address.value}} 
    </div> 
</body> 
</html> 

это консольный результат реакции enter image description here

ответ

1

асинхронный вызов не работает так, как вы ожидаете здесь. Затем происходит асинхронно, и они возвращают данные на основе вызова сервера API. Вы должны ожидать значения после успеха ajax, положив на него .then. Как внутренне $http способ возвращение promise.

idService.getID(id).then(function(response){ 
    alert(response); 
    $scope.myIDs = response; 
}) 
+0

я уже попробовать его, но он не работает, если вы пытаетесь предупредить $ scope.myIDs он возвращает undefind – ahmdabos

+0

@ahmdabos поместить предупреждение внутри '.then' функции, она будет вызвана, когда Аякс удался –

+0

его возвращения undefind также – ahmdabos

Смежные вопросы