2016-07-13 22 views
0

ich einen Service-Anruf, dass ich einen Wert in die Funktion übergeben möge die http.get api von id nennen:Service- und Controller-api mit einem Wert am Ende von api zu nennen

/home/api/order/1 

Meine Service sieht wie folgt aus:

angular.module("app") 
.factory('Service', ['$http', function ($http) { 
var urlBase = '/home/api/order/'; 
Service.getOrderbyorderid = function (orderid) { 
     return $http.get(urlBase + orderid) 
    }; 
}); 

Was ich für mein Controller versucht haben, ist:

getOrderbyorderid(); 
     function getOrderbyorderid() { 
      $scope.orderid = $routeParams.orderid ; 
      console.log($scope.orderid); //Sees ID 
      Service.getOrderbyorderid ($scope.orderid) 

      .success(function (response) { 
       $scope.ordertest = [] 
       $scope.ordertest = response.data; 
       console.log($scope.ordertest); //Undefined 
      }) 
     }; 

Frage

Kann mir jemand helfen, den Controller richtig anzurufen, damit ich die API mit einer bestimmten orderid aufrufen kann?

Fehler Ich erhalte

Ich erhalte eine undefinierte, wenn ich

console.log($scope.ordertest), 

aber ich die ID sehen, wenn ich

console.log($scope.orderid); 
+0

Dieser Code sieht aus wie es funktionieren sollte. Auf welche Probleme stoßen Sie? –

+0

Ich bekomme eine undefinierte, wenn ich console.log ($ scope.ordertest), aber ich sehe die ID, wenn ich console.log ($ scope.orderid); Aktualisieren der Frage, um den Fehler zu reflektieren. – epv

+0

Wenn Sie die Netzwerkregisterkarte überprüfen, wird die Anforderung angezeigt? –

Antwort

1

Sie .then statt .success verwenden sollten. Von the angular docs:

Die $ http Legacy Versprechen Methoden Erfolg und Fehler sind veraltet. Verwenden Sie stattdessen die Standardmethode then. Wenn $ httpProvider.useLegacyPromiseExtensions auf false gesetzt ist, werden diese Methoden $ http/legacy error ausgeben.

Die .success Methode selbst zerstört das Antwortobjekt für .then:

Service.getOrderbyorderid($scope.orderid) 
// .success(function (data) { 
    .then(function (response) { 
    $scope.ordertest = response.data;