我對JavaScript closures
和AngularJS promises
沒有太多的經驗。所以,這裏是我的方案在AngularJS中使用閉包和承諾
目標:
我需要$http
請求for
循環中調用
(明顯)問題
即使循環完成,我的變量還沒有更新
當前執行考試
function getColumns(fieldParameters)
{
return $http.get("api/fields", { params: fieldParameters });
}
for(var i = 0; i < $scope.model.Fields.length; i++)
{
var current = $scope.model.Fields[i];
(function(current){
fieldParameters.uid = $scope.model.Uid;
fieldParameters.type = "Columns";
fieldParameters.tableId = current.Value.Uid;
var promise = getColumns(fieldParameters);
promise.then(function(response){
current.Value.Columns = response.data;
}, error);
})(current);
}
//at this point current.Value.Columns should be filled with the response. However
//it's still empty
我該怎麼做才能做到這一點?
感謝
它可以工作,但是數據沒有被更新到正確的'當前'對象。這就是爲什麼我認爲我需要在這裏關閉。無論如何,我會反過來爲你提供部分答案。 –
@LuisLavieri查看我上面的修改。我認爲應該這樣做。 – peterholcomb
謝謝。那非常接近。我不得不傳遞'i'並在'$ http'中填充'fieldParameter'對象,以使其在最後工作 –