2017-06-09 3 views
-1

Ich versuche dies zu erreichen: Ich habe einen Anruf an eine REST API und bekomme eine ID, danach benutze ich diese ID um eine andere anzurufen REST API und erhalte daraus Daten für die ausgewählte ID. Ich muss dieselbe ID verwenden, um mehr REST-Aufrufe in derselben Winkelansicht auszuführen.ID von REST-Aufruf erhalten, dann in einem anderen REST-Aufruf verwenden Angular JS

Dies ist, wie mein Code in einem Controller wie folgt aussieht:

.controller("ReservationCtrl", function($scope, $stateParams, Reservations, Clients, Apartments) { 
    // Getting ID from URL & $state 
    $scope.currentReservation = Reservations.get({ reservationId: $stateParams.reservationId }); 

    // I'm trying to get guest data by forwarding an ID from the currentReservation, but I'm getting angular error 
    $scope.guest = Clients.get({ clientId: currentReservation.clients_id }); 

    // The same situation here, but now, as a function which I'm calling from the view I can get the ID, but when I call it from a pressed button, not from ng-init... 
    $scope.apartment = function(id){ 
      return Apartments.get({apartmentId: apartments_id}); 
    }; 
}); 

So, wie ich in den Code geschrieben hat, ich die Daten bekommen kann, wenn ich die Wohnung Funktion aus der Sicht aufrufen, nur mit Taste, die ich klicken muss, um die Daten zu laden, so dass dies nicht sinnvoll ist.

Jeder Weg, um das zu lösen? Vielen Dank.

Antwort

0

Ich habe das Problem mit Hilfe von @Adrian Smiths Antwort gelöst, also danke @Adrian Smith. Ich habe Angulars Versprechen benutzt, andere Anrufe zu führen.

hier also der Code, die gut funktioniert für mich:

.controller("ReservationCtrl", function($scope, $stateParams, Reservations, Clients, Apartments) { 
Reservations.get({ reservationId: $stateParams.reservationId }) 
.$promise.then(function(res){ 
    $scope.guest = Clients.get({ clientId: res.clients_id }); 
    $scope.apartment = Apartments.get({apartmentId: res.apartments_id}); 
    // .. and so on for every request which includes an ID from the Reservations REST call. 
}); 
-1

Wir können das Innere Ihrer Dienste nicht sehen, aber ich vermute, dass diese Dienste ein Versprechen, keinen Wert zurückgeben. Das Problem ist, dass $ scope.currentReservation.client_id nicht zugewiesen wird, wenn Clients.get versucht, ausgeführt zu werden.

Auch mehrere Variablen sind nicht vor dem Umfang, aber ich nehme an, dass das nur ein Tippfehler war.

Dieser modifizierte Controller sollte beide Probleme beheben.

+0

Hey @Adrian Smith, Danke für die Antwort, leider ist es nicht für mich arbeiten, aber es erinnerte mich mit $ Versprechen zu versuchen, So funktioniert es jetzt. – Adnan

Verwandte Themen