공장 http 호출 내에서 할당 후 업데이트되지 않은 범위가 있습니다.각도 JS : 할당 후 값이 업데이트되지 않습니다.
var form = {}
var requestForm = {}
requestForm['name'] = $scope.brand.name;
requestForm['country'] = $scope.brand.countryCode;
그래서이 값을 0으로 내 이니셜로 $scope.mergeId
를 설정하고있어, 다음 tableFactory.setMergeRequest
공장 파일에 HTTP 호출을 호출하고 부울과 ID 번호와 객체를 반환합니다.
$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;
부울 사실 일 것이다, 그리고 그것은 $scope.mergeId
에 ID (456)를 할당해야합니다. 그런 다음 해당 범위를 사용하여 다른 http 호출에 사용될 변수 form['mergeId']
을 할당합니다.
콘솔을 확인할 때 양식 변수가 0이므로 업데이트되지 않습니다. 나는 이니셜 라이저를 꺼냈다.하지만 그것은 정의되지 않았다. http 호출이 데이터를 보내고 있습니다. 범위가 업데이트되지 않습니다.
이전에이 문제를 경험 한 사람이 있습니까? 이 http 호출에 대한 설정을 변경해야합니까? 나는 이것을 시도했지만, 올바른 값을 설정하지 않고, 객체를 설정하고있다.
form['mergeId'] = tableFactory.setMergeRequest(requestForm).then(function(data){
if(data.mergeRequestStatus){
return data.insertedRequestId
}else{
return null
}
});
이 방법으로 얻은 응답은 어떻게 얻습니까?
도와주세요은, 나는 잠시 동안이 문제에 붙어 있었어요. 귀하의 도움을 주시면 감사하겠습니다.
추가 정보는
이 tableFactory.setMergeRequest
가 트리거되는 HTTP 호출이다.
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
자바 스크립트에서'promise chain'을 들여다 볼 수 있습니다. 귀하의 문제는'JS에서 chaning '의 유스 케이스입니다. –