2017-05-11 1 views
0

공장 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 
     } 

    }); 

이 방법으로 얻은 응답은 어떻게 얻습니까?

enter image description here

도와주세요은, 나는 잠시 동안이 문제에 붙어 있었어요. 귀하의 도움을 주시면 감사하겠습니다.

추가 정보는

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 
} 
+0

에 값을 설정하지를 설정해야합니다 http, 첫 번째 http에서 응답을 얻은 후, 오른쪽? –

+0

@AgamBanga 네, 맞습니다. – medev21

+1

자바 스크립트에서'promise chain'을 들여다 볼 수 있습니다. 귀하의 문제는'JS에서 chaning '의 유스 케이스입니다. –

답변

0

당신은 약속이 해결되는 값, 두 번째 충돌 할 않는 경우 기능

tableFactory.setMergeRequest(requestForm).then(function(data){ 
     if(data.mergeRequestStatus){ 
      form['mergeId'] = data.insertedRequestId; 
     }else{ 
      form['mergeId'] = null; 
     } 
    }); 
+0

나는 이것을 시험해 보았다. 나는 그 가치를 보았다. 이제 문제는 백엔드가 병합 ID가 누락되었다고 말하는 것입니다. 나는 컬 요청을했고 백엔드는 그것을 인식했다. 그게 제가 프런트 엔드 문제라고 믿게 만듭니다. – medev21

+0

tableFactory.setMergeRequest() 및 응답 json –

+0

을 공유 할 수 있습니까? 함수 및 응답을 추가했습니다. – medev21

관련 문제