2014-04-26 77 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; 
}