:回答者のおかげで、これは実際には有効なコードでしたが、リクエストが傍受され、すべてのパラメータが削除されていました。私がしようとしているAngularJSのパラメータを変更して複数のGETリクエストを送信
は出力に応じて、REST APIにHTTP GETリクエストを繰り返し行うためにとthis questionからソリューションを使用しています。
ただし、リクエストで渡すパラメータの1つを増やしたいとします。基本的に、APIは出力をページングし、それに応じてstartAt
の値を増やす必要があります。
マニュアル要求がで正常に動作:
<URL>/board?startAt=50
そして恩返し:
{"maxResults":50,"startAt":50,"isLast":true,"values":[list_of_values]}
はここで、これまでに私のコードです:
function getHttpPromise(start_at) {
// This function recurses until the server returns isLast = true.
//
// Each iteration appends the values in response.values to
// $scope.boards.
test = $http({
url: 'boards',
method: 'GET',
params: {'startAt': start_at.toString()}
}).
success(function (response) {
console.log(response); // the response contains startAt, which always has
// the initial value (0), rather than start_at's value
var values = response.values;
for (var i in values) {
var board = values[i];
$scope.boards[board.id] = board;
}
if (response.isLast) {
// We have received all the boards.
return true;
} else {
// Increment start_at and return another http request promise.
start_at += response.maxResults;
return getHttpPromise(start_at);
}
}
);
console.log(test); // params is correct here
return test;
}
この関数は、次のように呼び出します
jiraWorkLog.controller('SprintSelectCtlr',
function($scope, $http, $routeParams) {
$scope.init = function() {
$scope.boards = new Object();
getHttpPromise(0).then(
function (dummy_var) {
for (var board in $scope.boards) {
...
}
}
);
}
...
);
あなたは 'はconsole.log(RESPOを行うときに、コンソールに何を見ていますnse.maxResults); 'それを' start_at'に追加する前に? 値がインクリメントされる前と後に 'console.log(start_at);'を実行したときに何が表示されますか? – Nope
どこから呼び出すのですか?** getHttpPromise ** ?? – Aravind
@Fran値が正しくインクリメントされています( 'response.maxResults = 50'と' start_at = 0 => start_at = 50'など)。 @Aravind私はそれに応じて私の質問を編集しました。 'SprintCtlr'オブジェクトにあります。 –