当前位置: 首页 > 面试题库 >

来自AngularJS的$ success回调函数

林俊英
2023-03-14
问题内容

我正在调用控制器以获取API值。如何在$ http方法之外传递数组?

我需要将数组传递pa[]$scope.myData = pa;

首先,console.log(pa)打印值[10,20,30,40]。

其次,console.log(pa)清空array []。

的JavaScript

function Ctrl($scope, $http) {
    var url = "https://spreadsheets.google.com/feeds/list/0AsXjbsnPIu06dGswZUV4WX/values?alt=json-in-script&callback=angular.callbacks._0";
    var pa = [];
    $http({
        method: 'JSONP',
        url: url
    }).success(function (data) {

        for (i = 0; i < data.feed.entry.length; i++) {
            var entry = data.feed.entry[i];
            pa.push(entry.gsx$productivity.$t);
            console.log(pa); //[10,20,30,40,50]
        }
    });

    console.log(pa) // [] empty array

    $scope.myData = pa;
}

如何在$ success回调函数之外获取数组?


问题答案:

此代码是异步的。在服务有机会从您的API调用中获取值之前pa分配给。$scope.myData``$http

您需要使用$q服务承诺库来控制代码流。像这样:

function Ctrl($scope, $http, $q) {
  var url = "https://spreadsheets.google.com/feeds/list/0AsXjbsnPIu06dGswZUV4WX/values?alt=json-in-script&callback=angular.callbacks._0";
  var pa = [];
  var paPromise = $q.defer()

  $http({
    method: 'JSONP',
    url: url
  }).success(function(data) {

      for (i = 0; i < data.feed.entry.length; i++) {
        var entry = data.feed.entry[i];
        pa.push(entry.gsx$productivity.$t);
        console.log(pa); //[10,20,30,40,50]
      }
      paPromise.resolve(pa)
    });

  $scope.myData = paPromise.promise;
}

在这里,我们注入$q服务并paPromise使用它实例化变量。接下来,我们给诺言$scope.myData。一旦在$http成功方法中解决了承诺,AngularJS就会通知您$scope并更新值,并将其反映在模板/
DOM上。



 类似资料:
  • 问题内容: 我已经建立了一个工厂来处理我的控制器的功能,但是不知何故,控制器会在其中一个功能上返回错误: 错误:Auth.getUser(…)。成功不是函数@ http:// localhost:8080 / app / controllers / mainCtrl.js:10:1 … 我不知道这是怎么回事,其余功能似乎工作正常? 主控制器: 问题答案: 请参阅$ http服务文档中的 “ 弃用声

  • 我已经添加了标题作为响应。但当我从$HTTP调用测试路由api时,它仍然会抛出错误。 我完全是一片空白,我知道我只是错过了一些愚蠢的东西。请帮我解决这件事。 谢谢 更新:解决方案 通过在php文件中添加header,它现在可以工作了。头('access-control-allow-origin:*'); 头('access-control-allow-methods:GET,PUT,POST,DE

  • 我有一个actor可以从外部系统(UDP/TCP)接收消息。根据传入数据的内容,有时我希望actor回调代码的非AKA部分。 换句话说,我不想用调用和actor并等待一些传入数据,而是异步回调。 我如何实现这一点而不关闭调用对象(在创建ActorRef时会在回调中传递琐碎的内容,但这会捕获调用者)?

  • 本文向大家介绍js自定义回调函数,包括了js自定义回调函数的使用技巧和注意事项,需要的朋友参考一下 背景分析 首先看一段js的代码,主要实现添加的时候首先通过异步请求判断是否存在,如果不存在的话,在进行添加操作: 当我添加一个数据的时候,我首先通过判断是否在数据库中存在(当然,如果前后台彻底分离的话,不应该前端进行业务逻辑的判断,前端只应该,用来展示数据),首先,isExited()的请求是aja

  • 这个递归编码是错误的还是仅仅是那个控制台。即使执行递归,log()也不总是被执行? 在控制台中执行testrecursion不会返回任何错误。 信息控制台日志显示 再次执行测试递归会在信息控制台日志中显示这一点。 第三次执行testrecursion会在信息控制台日志中显示这一点。 在对此进行了数十次测试后,递归步骤似乎偶尔被调用。输出似乎是随机的。预期输出为 这是否看起来像递归正确发生,只是控制

  • 问题内容: 我了解回调函数的本质,因为该函数在作为参数传递给另一个函数后会再次执行。但是,我对回调函数内部的变量来自何处感到困惑,如以下node.js示例所示: 变量req和res如何填充?我们将不胜感激一个示例,该示例解释了如何仅调用res.render(…)而无需自己声明res。 问题答案: 它们来自在调用时调用普通非回调函数时来自的位置。 如果您有此功能, 您知道在调用add时a和b来自于,