2014-04-25 3 views
1

나는 angularjs를 사용하여 스터브 개발을하고 있습니다. 내 스텁은 서버의 JSON 파일입니다. 그래서, 나는 스텁을 얻기 위해 "스텁"함수 내에서 $ http 호출을하고있다. 그러나 $ http가 비동기이기 때문에 whenGET은 빈 데이터를 항상 리턴합니다 (http가 완료되기를 기다리지 않습니다). 이 주제에 대한 현재의 질문을 조사했습니다. 이들은 HTTP 호출의 리턴 값을 범위 데이터 모델에 할당하는 접근법을 제공합니다. http 요청이 완료된 후 데이터를 반환하고 싶습니다. 아래는 코드입니다.

stubbedOstnApp.run(['$httpBackend','$http',function($httpBackend, $http){ 
    var tempData; 
    var get = function(){ 
     return $http.get('../test/data/program-categories.json').then(function(data){ 
      tempData = data.data; 
      console.log(tempData); 
      return tempData; 
     }) 
    }; 
    get(); 
    console.log(tempData); 

    $httpBackend.whenGET('lookup/program-categories').respond(tempData); 
    $httpBackend.whenGET(/^views\//).passThrough(); 
    $httpBackend.whenGET(/^\.\.\/test\/data\//).passThrough(); 
}]); 

기본적으로 tempData가 채워질 때까지 기다려야합니다. get 함수 내의 tempData는 whenGET 메서드가 실행 된 후 콘솔에 기록됩니다.

답변

1

이 방법으로 시도하십시오 :

var get = function(){ 
    return $http.get('../test/data/program-categories.json').then(function(data){ 
     tempData = data.data; 
     $httpBackend.whenGET('lookup/program-categories').respond(tempData);    
     console.log(tempData); 
     return tempData; 
    }) 
}; 
get(); 
console.log(tempData); 
+0

그것은 효과가있다. 감사! – Srik

0

이 작업을 수행하려면 사용합니다 약속 : 여기 약속의 https://docs.angularjs.org/api/ng/service/$q

우수한 설명 : Processing $http response in service 당신은 tempData 당신이 $ http.get

에게 제공하는 성공 콜백에 채워해야

+0

현재 코드는 약속을 사용합니다. 나는 뭔가 다른 것을 필요로한다. 현재 솔루션의 대부분은 $ scpe에 데이터 모델을 채우는 방법을 나타냅니다. http가 완료 될 때까지 내 지시 사항 중 일부를 기다리고 싶습니다. – Srik