2017-07-18 6 views
0

Ich habe einige Probleme mit einer Anfrage von Angular zu meinem Java-Backend.

Meine aktuellen Code ist dies:

$scope.listdevices=function(){ 
     var devices = $resource('http://localhost:8080/userapi/devices/:userId',{userId:'@userId'}); 
     var list=devices.query({userId:$scope.userId}); 
     console.log(JSON.stringify(list)); 
     console.log(list); 
     console.log(list.length+"TAMANHO") 
}; 

Die Daten werden geholt wird und es sieht wie folgt aus:

enter image description here

Aber die Objekte nicht in meiner Liste gespeichert wird, wenn ich Rufen Sie listdevices auf, um eine Liste der zu iterierenden Objekte zurückzugeben.

Vielen Dank

+0

Die Frage ist nicht sehr klar, aber es sieht aus wie Sie einen Code in der Abfrage Erfolg Callback-Funktion verschieben müssen (jetzt Asynchron-Code zu tun synchron Sie versuchen.) –

Antwort

0

.query wird async, so dass Sie einen Rückruf oder ein Versprechen benötigen. Wie auch immer, wenn Sie versuchen, einen einzelnen Datensatz zu erhalten, verwenden Sie "get". Hier haben Sie ein Beispiel:

myApp.factory('Device', function($resource) { 
    return $resource('http://localhost:8080/userapi/devices/:userId', { 
    userId: '@userId' 
    }); 
}); 

myApp.controller('YourCtrl', function(Device) { 

    Device.get({ 
    userId: 1 
    }).$promise.then(function(res){ 
    console.log(res) 
    }) 
}) 

.query ist für die Suche nach Ihrem Endpunkt, zum Beispiel, wenn Sie mit den Bedingungen suchen Geräte wollen. Die Ressource geht davon aus, dass 'http://localhost:8080/userapi/devices' ein Array zurückgibt, während /: userId ein Objekt zurückgibt.

Erweiterung die Antwort nach Ihrem Kommentar, wenn Sie eine Liste der Geräte eines bestimmten Benutzers (das gibt einen Array) abfragen wollten, würden Sie tatsächlich verwenden .query

Device.query({ 
    userId: 1 
}).$promise.then(function(results) { 

    console.log(results) 

}) 

Alternativ, wenn Sie verwenden Mit einem Callback haben Sie Zugriff auf die Header.

Device.query({ 
    userId: 1 
}, function(results, headers) { 

}) 
+0

hmm Dank für Ihre Hilfe! Aber ich habe immer noch einige Zweifel ... das Problem ist, dass ich ein Array von Geräten von einem Benutzer möchte .. deshalb hat die URL die userId als Parameter..ist das möglich? Danke :) – PJMC

+0

Überprüfen Sie die bearbeitete Antwort – yBrodsky

+1

Ich würde vorsichtig sein Pfeil Funktionen in JavaScript vorschlagen. Es wird von IE nicht unterstützt. –

Verwandte Themen