我有一個作用域內的http調用後沒有更新的作用域。Angular JS:賦值後未更新的值
var form = {}
var requestForm = {}
requestForm['name'] = $scope.brand.name;
requestForm['country'] = $scope.brand.countryCode;
所以我設置一個$scope.mergeId
我的初始化爲0值,那麼tableFactory.setMergeRequest
將調用工廠文件中的HTTP調用,並會返回一個對象,用布爾和編號。
$scope.mergeId = 0;
//set merge request/id
tableFactory.setMergeRequest(requestForm).then(function(data){
if(data.mergeRequestStatus){
console.log(data);
$scope.mergeId = data.insertedRequestId; //456
}else{
console.log('no merge id');
}
});
form['mergeId'] = $scope.mergeId;
布爾將是真實的,它應該在ID(456)分配給$scope.mergeId
。然後,該範圍將用於分配將用於另一個http調用的form['mergeId']
變量。
當我檢查控制檯時,窗體變量爲零,所以它沒有更新。我拿出了初始化程序,但後來說它是未定義的。 http調用正在發回數據,這只是範圍沒有被更新。
有沒有人經歷過這個問題?我應該改變這個http調用的設置嗎?我試圖做到這一點,但它沒有設置正確的值,它設置了一個對象。
form['mergeId'] = tableFactory.setMergeRequest(requestForm).then(function(data){
if(data.mergeRequestStatus){
return data.insertedRequestId
}else{
return null
}
});
我從這種方式得到的迴應是一個d,我如何得到這個值?
請幫幫忙,我已經遇到這個問題了一會兒。您的幫助將不勝感激。
附加信息
這是HTTP調用其中tableFactory.setMergeRequest
被觸發。
var setMergeRequest = function(object){
var mergeRequestCall = {
method: 'POST',
url: CONFIG.PYTHON_API_END_POINT + '/api/mergerequest',
data: object
}
var d = $q.defer();
$http(mergeRequestCall)
.success(function(response){
d.resolve(response);
}).error(function(response){
d.resolve([]);
});
return d.promise;
}
的迴應是:
{
"insertedRequestId": 456,
"mergeRequestStatus": true
}
http,從第一個http獲得響應之後,對嗎? –
@AgamBanga是的,這是正確的 – medev21
你可以看看JavaScript中的承諾鏈。你的問題是''chaining in JS'的使用案例 –