AngularJSの関数を介して URL への不明な量の API 呼び出しを呼び出し、get()
それらすべてをモデル ($scope
変数) に追加する方法はありますか。これまでに行ったことは次のとおりです。
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;
}
UID があるかどうかを確認し、それぞれに対して 、オブジェクト、オブジェクトの順に入力されたオブジェクトを作成しtemp
ます。オブジェクトを設定したら、それを配列にプッシュします。ループが終了したら、dropboxAccounts モデルを変数 inに設定します。私は Angular を初めて使用しますが、これが少なくとも正しい考えであると確信しています。幸いなことに、次のデータを正しい順序で取得しています。uid
accountInfo
files
temp
myDropbox
myDropbox
$scope
{"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"}]
}
奇妙なことに、私の UID の 1 つだけが更新されます。2 つの UID があるため、ループが正しく実行されていることがわかります。ループの開始時にアラートを出すと、2 つのループが発生します。2 番目が入力されていないと思う理由は、プッシュ ステートメントが両方の約束が通過するのを待っていないためです。各 AJAX 呼び出しが完了するのを待ってから変数に代入myDropbox
するにはどうすればよいですか?$scope