2014-12-17 2 views
1

저는 AngularJS에 여전히 새로운 경험을하고 있으며 다음과 같은 사항을 파악하기 위해 고심하고 있습니다.

나는 꽤 많은 웹 서비스를 사용해야하는데, 상당수는 다음 호출을 성공적으로 수행하기 위해 다른 웹 서비스의 데이터를 사용합니다.

예를 들어, 첫 번째 웹 서비스는 프로필 목록을 검색합니다.

ip.controller("ProfilesCtrl", function($scope, $http) { 
 

 
    $http.post("Profile_List.asp").success(function(data) { 
 
    $scope.profiles = data; 
 
    }).error(function() { 
 
    alert("An unexpoected error ocurred while loading profiles!"); 
 
    }); 
 

 
});

프로필은 JSON 개체를 반환합니다. 반환 된 데이터는 :

{ 
 
    "Success": true, 
 
    "ErrorMessage": "", 
 
    "Objects": [{ 
 
    "GUID": "208FF69D-A4EB-4760-B2ED-414C900F4AAC", 
 
    "Name": "John Doe", 
 
    "Status": false 
 
    }, { 
 
    "GUID": "BC5C53FD-5CA7-4DBE-8594-D26AD88B758B", 
 
    "Name": "Jane Doe", 
 
    "Status": true 
 
    }, { 
 
    "GUID": "2FCD677B-DA36-4014-823A-9BDD1A72AD66", 
 
    "Name": "Anonymous", 
 
    "Status": true 
 
    }] 
 
}

가 좋아, 내가 초기 호출을 한 후, 그래서 내가 다른 웹 서비스로 각 프로파일 개체의 GUID를 보내야합니다. 이 서비스는 GUID를 사용하여 특정 프로필의 ID를 결정합니다.

두 번째 웹 서비스의 데이터는 첫 번째 호출의 GUID에 대한 ID 만 반환합니다.

어떻게 이러한 $ http 호출을 연결할 수 있습니까? 새로운 json 객체를 만들고 거기에서 데이터를 사용하는 것이 더 낫겠습니까?

아약스를 사용하기 전에이 작업을 수행했습니다.

* 내 컨트롤러 코드와 관련하여 또 다른 질문은 이렇게 좋으므로 $ http 호출을 서비스, 제공 업체 또는 공장으로하는 것이 더 좋을까요? 어떻게이 일을 할 수 있습니까?

위의 AngularJS 코드를 얻는 데 도움이되는 링크를 제공해 주시면 감사하겠습니다.

불명확 한 점이 있는지 문의하십시오.

답변

2

"success"핸들러에서 다음 호출을 실행하기 만하면됩니다.

$http.post("Profile_List.asp").success(function(data) { 
    $scope.profiles = data; 
    //first call succeeded, and we have the data. call method 2 
    executeStep2($scope.profiles); 

    }) 


function executeStep2(profiles) 
{ 
    $http.post("second_method") // etc. (you can just send profiles as post data here) 
} 
+0

단지 의견 : 함수를 사용하기 전에 선언하는 것이 좋습니다 (이 경우 executeStep2). – demaniak