【问题标题】:Returning from function argument从函数参数返回
【发布时间】: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


【解决方案1】:

不是返回,而是在作用域上设置一个变量。像这样的:

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

【讨论】:

    猜你喜欢
    • 2012-05-11
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    相关资源
    最近更新 更多