【发布时间】:2014-04-26 22:02:50
【问题描述】:
我现在经常使用 AngularJS,但我相信这更像是一个 JavaScript 问题。这是来自示例控制器的 sn-p。假设它包含一个名为“Restaurants”的 Angular 服务(由我定义),我可以对其进行查询。
$scope.myFunction = function() {
Restaurants.query(function(restaurants) {
// How to return 'restaurants'?
return restaurants;
}
}
Restaurant.query() 的结果由我给它的函数参数处理。我的最终目标是让“restaurants”变量成为“myFunction()”的返回值。但是当我从嵌套回调中返回时,它不起作用。
两个问题: - 在回调中,返回值('restaurants')去哪里了? - 我应该如何重构这段代码,让 'restaurants' 可以成为 'myFunction()' 的返回值?
【问题讨论】:
-
如果
Restaurants.query()是异步的,那么您将无法return restaurants。$scope.myFunction()将始终在restaurants实际可用之前退出。 "How to return the response from an AJAX call?" -
您在这里的最终目标是什么?是否要绑定
myFunction以从模板内部访问restaurants?在这种情况下,您可以只定义$scope.restaurants,然后在您的函数中执行$scope.restaurants = restaurants。 -
Restaurants是$resource实例吗? -
是的 Restaurants 是一个 $resource 实例
-
我发现自己经常使用诸如 data-ng-init="initRestaurants()" 之类的东西来初始化变量(例如,可用的餐馆)。假设我想遍历餐厅列表,这样做会很棒: data-ng-repeat="restaurant in getRestaurants()" 其中 getRestaurants() 是一个返回餐厅的函数
标签: javascript angularjs callback