Mehrere AngularJS-get-Anfragen in einem Modell

Gibt es eine Möglichkeit zu nennen, eine unbekannte Menge von API-aufrufen einer URL über die get() Funktion in AngularJS und fügen Sie Sie alle in ein Modell ($scope variable). Was ich getan habe, so weit ist die folgende:

if(theUIDS != "") {
    var myDropbox = [];

    for(i = 0; i < theUIDS.length; i++) {
        var temp = {};

        temp.uid = theUIDS[i];

        $http({ url: '/dropbox/accounts/get', method: 'GET', params: { uid: theUIDS[i] }}).success(function(acctData) {
            temp.accountInfo = acctData;
        });

        $http({ url: '/dropbox/files/get', method: 'GET', params: { uid: theUIDS[i] }}).success(function(fileData) {
            temp.files = fileData;
        });

        myDropbox.push(temp);
    }

    $scope.dropboxAccounts = myDropbox;
}

Ich überprüfen, ob es irgendwelche UID ' s und ich erstelle eine temp - Objekt, welches gefüllt ist mit einem uid, dann ein accountInfo Objekt, und dann ein files Objekt. Nachdem ich meine temp Objekt, Schiebe ich es auf die myDropbox array. Sobald die Schleife beendet ist, habe ich die dropboxAccounts Modell der myDropbox variable in $scope. Ich bin neu zu Eckig, aber ich bin mir ziemlich sicher, dies ist zumindest die richtige Idee. Zum Glück bin ich immer folgende Daten in der richtigen Reihenfolge:

{"uid":"332879"}
{"uid":"155478421",
    "accountInfo":{
        "country":"US",
        "display_name":"Patrick Cason",
        "name":"Second Dropbox",
        "quota_normal":1174504,
        "quota_shared":0,
        "quota_total":2147483648,
        "referral_link":"https://www.dropbox.com/referrals/NTE1NTQ3ODQyMTk?src=app9-203957",
        "uid":155478421},
    "files":[{
        "created_at":"2013-04-17T15:13:46Z",
        "directory":true,
        "dropbox_user_id":26,
        "fileType":"Folder",
        "id":198,
        "name":"Photos",
        "path":"/Photos",
        "rev":"10edb44f9",
        "size":"-",
        "updated_at":"2013-04-17T15:13:46Z"}]
}

Das merkwürdige ist, dass nur eine von meine UID ist wird aktualisiert. Ich weiß, dass die Schleife korrekt Durchlaufen, weil ich zwei UID ' s und wenn ich das alert am Anfang der Schleife, bekomme ich zwei Schleifen. Der Grund, warum ich denke, dass die zweite nicht aufgefüllt wird, weil die push-Anweisung, nicht zu warten, für die beiden verspricht, zu Durchlaufen. Wie kann ich sicherstellen, dass ich warten für jede AJAX-Aufrufe zu beenden, bevor die Zuweisung myDropbox zu den $scope variable?

Schreibe einen Kommentar