2014-04-26 74 views
0

回到我現在用AngularJS的工作很多,但我認爲這是比什麼都一個JavaScript問題。這裏是一個示例控制器的片段。我們假設它包含一個名爲'Restaurants'的Angular服務(由我定義),可以查詢。從功能參數

$scope.myFunction = function() { 

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

Restaurants.query()的結果是由我給它的函數參數處理的。我的最終目標是讓'餐廳'變量成爲'myFunction()'的返回值。但是當我從嵌套的回調中返回時,它不起作用。

兩個問題: - 在回調,哪裏的返回值(「餐館」)去? - 我應該如何重構此代碼,以使'餐廳'可以成爲'myFunction()'的返回值?

+0

如果'Restaurants.query()'是異步的,那麼你將無法'返回餐館'。 ''scope.myFunction()'將在'restaurants'實際可用之前總是退出。 「[如何返回從AJAX調用的響應?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call)」 –

+0

你是什麼最終目標在這裏?你想綁定'myFunction'來訪問模板中的'餐廳'?在這種情況下,您可以定義'$ scope.restaurants',然後在函數中執行'$ scope.restaurants = restaurants'。 – basilikum

+0

餐廳是一個$資源實例嗎? – gkalpak

回答

0

而不是返回的,關於範圍設置一個變量。類似這樣的:

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