无法使用 $http angularjs 获取结果数据

2024-02-07

我尝试使用 $http,但为什么它返回 null 结果?

angular.module('myApp')
.factory('sender', function($http) {
    var newData = null;
    $http.get('test.html')
        .success(function(data) {
            newData = data;
            console.log(newData)
        })
        .error(function() {
            newData = 'error';
        });
    console.log(newData)
    return newData
})

控制台说:http://screencast.com/t/vBGkl2sThBd4 http://screencast.com/t/vBGkl2sThBd4。为什么我的newData先是null然后又被定义了?怎样做才正确呢?


正如 YardenST 所说,$http是异步的,因此您需要确保依赖于您返回的数据的所有函数或显示逻辑$http.get(),得到相应的句柄。实现这一目标的一种方法是利用“承诺”$http返回:

笨蛋演示 http://plnkr.co/edit/9w2jTg?p=preview

var myApp = angular.module('myApp', []);

myApp.factory('AvengersService', function ($http) {

    var AvengersService = {
        getCast: function () {
            // $http returns a 'promise'
            return $http.get("avengers.json").then(function (response) {
                return response.data;
            });
        }
    };

    return AvengersService;
});


myApp.controller('AvengersCtrl', function($scope, $http, $log, AvengersService) {
    // Assign service to scope if you'd like to be able call it from your view also
    $scope.avengers = AvengersService;

    // Call the async method and then do stuff with what is returned inside the function
    AvengersService.getCast().then(function (asyncCastData) {
            $scope.avengers.cast = asyncCastData;
    });

    // We can also use $watch to keep an eye out for when $scope.avengers.cast gets populated
    $scope.$watch('avengers.cast', function (cast) {
        // When $scope.avengers.cast has data, then run these functions
        if (angular.isDefined(cast)) {          
            $log.info("$scope.avengers.cast has data");
        }
    });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用 $http angularjs 获取结果数据 的相关文章

随机推荐

  • Python shift() 从同一列,就像 Excel 中的日期一样

    我想在 python 中创建 target start 列 id start end diff target start 12220 1999 11 22 2008 08 31 3515 1999 11 22 12220 2018 04 1
  • c# - 如何以编程方式检查解决方案中的引用是否配置正确

    我们遇到了一些构建错误 需要手动修复引用 我想以编程方式检查是否定义了项目引用而不是 dll 引用 因此 请检查解决方案中的所有引用 并针对每个项目检查引用的定义是否正确 这样相关的依赖就会被正确配置 有人知道现有的解决方案吗 我想要一个在
  • 如何将WPF动画逐帧渲染为视频?

    我在 WPF 中创建了一个我喜欢的很好的效果 我希望能够 记录 这个效果 但运行时却很不稳定 有没有办法可以将其转换为逐帧过程并自己将其另存为视频 而不是尝试在播放期间录制它 基本上我想将 WPF 渲染为视频 或列出一系列保存为位图的帧 关
  • Nest.js 中使用 @nestjs/passport 进行可选身份验证

    我有一条需要经过身份验证和未经身份验证的用户使用的路线 我用 UseGuards AuthGuard jwt 启用身份验证 但它会阻止任何未经身份验证的用户访问该路由 正常 如何允许未经身份验证的用户也访问该路由 似乎没有我可以传递的选项A
  • 如何在 Git 中分离子目录但保留所有分支

    我一直在关注这个问题的答案将子目录分离到单独的 Git 存储库中 https stackoverflow com questions 359424 detach subdirectory into separate git reposito
  • UITableView 不重用单元格,这样做的好例子吗?

    我的 UITableView 有 5 个单元格 每个都有一个 UITextField 作为子视图 用户将在其中输入数据 如果我确实使用单元格重用 则当单元格滚动到视图之外时 文本字段将被清除 我不想处理这个问题 有没有办法不重复使用单元格
  • 如何编辑引导程序导航栏的样式?

    我正在尝试编辑引导导航栏的样式 但是 例如 我无法编辑颜色和删除边框 我想将颜色更改为白色 并将边框颜色更改为白色 并且我已包含以下代码 谁能告诉我我做错了什么 navbar default background color ffffff
  • 更改单元格中某些字符的颜色

    我在单元格 A1 中有一句话 我想要其中 50 个 我想将任何数字字符设置为红色文本 只是数字字符 我该怎么做呢 这是我所拥有的框架 Sub RedText Dim i As Integer For i 1 To Len Cells 1 1
  • webpack.config.js 不断将bundle.js 的脚本标记添加到我的index.html 中

    我有如下的 webpack config js var path require path var webpack require webpack var HtmlWebpackPlugin require html webpack plu
  • Angular,如何从字符串解析模板并传递当前上下文变量

    我制作了一个简单的组件来创建表 Component selector admin table template table class table table bordered thead th column label th thead
  • 如何在 if 语句中使用 grep?

    我有以下命令可以给出正确的结果 grep include java Ri System loadLibrary 但是 如果我将它放在 if 条件中 无论字符串是否存在 它总是返回相同的 0 结果 if grep include java R
  • 如何取消引用已传递给子例程的 Perl 哈希引用?

    我仍在尝试解决我的哈希取消引用问题 我当前的问题是我现在将 hashref 传递给子组件 并且我想在该子组件中取消引用它 但我没有找到正确的方法 语法来做到这一点 在 sub 中 我想迭代哈希键 但 hashref 的语法与哈希不同 我知道
  • Java:需要从字节数组创建 PDF

    我从 DB2 表中得到了 blob 我正在将其转换为字节数组 以便我可以使用它 我需要获取字节数组并创建一个PDF出来了 这就是我所拥有的 static void byteArrayToFile byte bArray try Create
  • 哪些列表可以作为临时列表?

    当处理项目列表时 列表仅充当暂时的容器 您建议我使用哪些列表类型 I 不想手动销毁列表 想要使用built in列表类型 无框架 库 想要仿制药 可以在不导致泄漏的情况下实现这一点的东西 function GetListWithItems
  • 使用ionic安装和卸载cordova应用程序时执行脚本

    我使用 cordova 已经有好几年了 使用 ionic 的时间还不到一年 我正在寻找在安装应用程序和卸载应用程序时运行 JavaScript 函数的方法 我做了很多搜索 但没有找到任何相关内容 有人有一个想法 至少有一个近似值可以作为起点
  • 让menhir将用户定义的函数从.mly添加到.mli

    Menhir 允许将任意 ocaml 代码添加到 mly 文件的末尾 我想在其中声明一些函数 但我找不到一种方法让 menhir 将我的函数添加到 mli 文件中 以便它们从其他模块中可见 是否可以 答案很简单 那就是no 中定义的代码 m
  • 解决导航属性 Dynamics WebAPI 深度插入时出现的错误

    我正在使用微软动态Web API https msdn microsoft com en us library mt607689 aspx将数据写入 Microsoft Dynamics 365 中的实体 当我尝试执行深插入 https m
  • 用于 Angular.js 依赖注入管理的 Grunt.js

    我正在使用 Grunt 自动构建我的网络应用程序 我遇到了一个有趣的问题 我有两个选择 1 grunt dev and 2 grunt build grunt dev只执行与开发相关的基本任务 我的 主要 Angular 模块如下所示 va
  • Py_None 的值

    我很清楚None用于表示缺乏价值 但由于在实现过程中一切都必须有一个潜在的价值 所以我想看看使用了什么值来表示没有值 关于CPython 我理解 基于文档 https docs python org 3 c api none html c
  • 无法使用 $http angularjs 获取结果数据

    我尝试使用 http 但为什么它返回 null 结果 angular module myApp factory sender function http var newData null http get test html success