2014-04-26 3 views
0

저는 AngularJS와 많은 작업을하고 있습니다. 그러나 이것은 다른 것보다 JavaScript 질문에 더 가깝습니다. 여기에 예제 컨트롤러의 스 니펫이 있습니다. 내가 '쿼리'할 수있는 '레스토랑'이라는 Angular 서비스 (나에 의해 정의 됨)를 포함한다고 가정 해 보겠습니다.함수 인수에서 돌아 가기

$scope.myFunction = function() { 

    Restaurants.query(function(restaurants) { 
     // How to return 'restaurants'? 
     return restaurants; 
    } 
} 

Restaurants.query()의 결과는 내가 준 함수 인수로 처리됩니다. 내 궁극적 인 목표는 'restaurants'변수를 'myFunction()'의 반환 값으로 만드는 것입니다. 그러나 중첩 콜백 내에서 돌아 오면 작동하지 않습니다.

두 가지 질문 : - 콜백 내에서 반환 값 ('레스토랑')은 어디로 이동합니까? - 'restaurants'가 'myFunction()'의 반환 값이 될 수 있도록이 코드를 어떻게 재구성해야합니까?

+0

'Restaurants.query()'가 비동기 인 경우'레스토랑 반환 '을 할 수 없습니다. '$ scope.myFunction()'는 레스토랑이 실제로 사용 가능하게되기 전에 항상 종료됩니다. "[AJAX 호출에서 응답을 반환하는 방법?] (http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call)" –

+0

궁극적 인 목표는 여기에? 'myFunction'에 바인딩하여 템플릿 내부에서'레스토랑 '에 액세스하고 싶습니까? 이 경우,'$ scope.restaurants'를 정의한 다음 함수 내에서'$ scope.restaurants = restaurants'를 정의 할 수 있습니다. – basilikum

+0

'Restaurants '는'$ resource' 인스턴스입니까? – gkalpak

답변

0

반환하는 대신 범위에서 변수를 설정하십시오. 다음과 같은 것 :

Restaurants.query(function(restaurants) { 
    // How to return 'restaurants'? 
    $scope.restaurants = restaurants; 
}