AngularJS:工厂 $http 服务

2024-03-27

我试图理解 Angular 中工厂和服务的概念。我在控制器下有以下代码

init();

    function init(){
        $http.post('/services', { 
            type : 'getSource',
            ID    : 'TP001'
        }).
        success(function(data, status) {
            updateData(data);
        }).
        error(function(data, status) {

        });

        console.log(contentVariable);
    };
    function updateData(data){
        console.log(data);
    };

这段代码工作正常。但是当我将 $http 服务移入工厂时,我无法将数据返回到控制器。

studentApp.factory('studentSessionFactory', function($http){
    var factory = {};
    factory.getSessions = function(){
        $http.post('/services', { 
            type : 'getSource',
            ID    : 'TP001'
        }).
        success(function(data, status) {
            return data;
        }).
        error(function(data, status) {

        });
    };
    return factory;
});

studentApp.controller('studentMenu',function($scope, studentSessionFactory){
    $scope.variableName = [];
    init();
    function init(){
        $scope.variableName = studentSessionFactory.getSessions();
        console.log($scope.variableName);
    };
});

使用工厂有什么优势吗,因为 $http 即使在控制器下也可以工作


搬家的目的studentSessions控制器之外的服务是为了实现关注点分离。您的服务的工作是知道如何与服务器通信,而控制器的工作是在视图数据和服务器数据之间进行转换。

但是您混淆了异步处理程序以及返回的内容。控制器仍然需要告诉服务稍后收到数据后要做什么......

studentApp.factory('studentSession', function($http){
    return {
        getSessions: function() {
            return $http.post('/services', { 
                type : 'getSource',
                ID    : 'TP001'
            });
        }
    };
});

studentApp.controller('studentMenu',function($scope, studentSession){
    $scope.variableName = [];

    var handleSuccess = function(data, status) {
        $scope.variableName = data;
        console.log($scope.variableName);
    };

    studentSession.getSessions().success(handleSuccess);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS:工厂 $http 服务 的相关文章

  • 在 JavaScript 中计算不包括周末和节假日的天数

    我正在尝试编写一个代码 其中将计算总天数 不包括周末和自定义假期 我通过 stackoverflow 和 adobe 论坛进行搜索以找到解决方案 并提供了以下代码 如果公共假期恰逢工作日 周六至周三 则不计算在内 我的问题是 如果公共假期落
  • 在 d3 中应用转换时出现错误

    我正在尝试对我在 d3 中设计的条形图应用一些过渡效果 这是我的代码 svg selectAll bar data data enter append g attr class bar append rect attr rx barRadi
  • Google 地图第二次无法加载 - AngularJS

    我正在使用 GoogleMap API angular google maps js 包 并且我有一个非常奇怪的行为 The first time I load it i get the full map loaded like here
  • 如何从左向右滑动文本和图像并具有滑动效果[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 HttpApi 与 I/O 完成端口结合使用

    我刚刚偶然发现了微软的HTTP 服务器 API http msdn microsoft com en us library aa364510 28v vs 85 29 aspx 简介中写道 HTTP 服务器 API 使应用程序能够通过 HT
  • 当key未知时如何获取js对象中的属性值

    我有一个对象数组 a 81 25 p 81 25 81 26 p 81 26 我想循环遍历数组并获取值p在每个元素中 for var key in a console log a key outputs 81 25 Object How d
  • 如何使用javascript将视频文件转换为字符串?

    我在 signalR 工作 我想通过将视频文件拆分为不同部分来将视频文件从一个客户端发送到另一个客户端 我已经通过分割图像源数据发送图像并在另一个客户端上接收该图像 document getElementById fileUpload ad
  • 单击 btn 而不触发 div 单击未按预期工作

    代码沙盒 https codesandbox io s currying breeze depdc9 file package json https codesandbox io s currying breeze depdc9 file
  • 如何在没有 jQuery 或延迟加载的情况下推迟背景图像

    根据帕特里克 塞克斯顿tutorial https varvy com pagespeed defer images html 我想以与这里相同的方式推迟背景图像img img src data image png base64 R0lGO
  • Lodash _.hasIntersection?

    我想知道两个或多个数组是否有共同的项目 但我不在乎这些项目是什么 我知道 lodash 有一个 intersection方法 但我不需要它来遍历每个数组的每个项目 相反 我需要类似的东西 hasIntersection一旦找到第一个常见的出
  • 如何将类组件中的 props 发送到功能组件?

    我是 ReactJS 的初学者 需要知道如何将一个页面中的 props 值发送到另一个页面 道具位于第一页上我可以获取类组件值如何获取另一页中的值 提前致谢 墙色 jsx import React Component from react
  • 使标签充当输入按钮

    我怎样才能做一个 a href http test com tag test Test a 就像表单按钮一样 通过充当表单按钮 我的意思是 当单击链接执行操作时method get 或 post 以便能够通过 get 或 post 捕获它
  • 标头和 cookie 中的 CSRF 令牌在请求中不匹配

    我正在实现一个无状态 API 我的组织表示我需要防止 CSRF 攻击 我在网上找到了这个人的解决方案 并决定尝试实施仅客户端的方法 http blog jdriven com 2014 10 stateless spring securit
  • 数据表 - 从 AJAX 源过滤数据

    我有一个数据表 正在从 api 获取数据 现在我的状态是活动的 非活动的 如果标志是活动的 那么我需要在数据表中显示 否则我不应该显示过期的 这是我的fiddle https jsfiddle net lakshmipriya001 qLp
  • 单击 html 中的按钮后如何从 javascript 函数写入文件

    我正在尝试编写真正基本的代码 在 html 文件上按下按钮后 通过 JavaScript 函数在本地写入 txt 文件 这不可能吗 我可以仅使用 javascript 文件写入文件 但在尝试同时使用两者时则不能
  • 阻止 PM2 上不同时运行的请求

    在我的 Express 应用程序中 我在应用程序中定义了 2 个端点 一种用于 is sever up 检查 另一种用于模拟阻塞操作 app use status req res gt res sendStatus 200 app use
  • 如何解析 Content-Disposition 标头以检索文件名属性?

    使用 go 如何解析从 http HEAD 请求检索到的 Content Disposition 标头以获取文件的文件名 此外 如何从 http HEAD 响应中检索标头本身 这样的事情正确吗 resp err http Head http
  • 如何在控制台中隐藏日志消息的来源?

    当将消息输出到控制台时 还会显示源代码 在 Chrome 开发者工具中 它位于右侧 console log Foo Source Foo test js 1 Output 但是 在某些网站上 会显示消息without正在显示的源 例如Fac
  • 如何使用node.js获取屏幕分辨率

    我需要使用 node js 获取屏幕分辨率 但以下代码不起作用 var w screen width var h screen height 这也行不通 var w window screen width var h window scre
  • gjs 如何使用 g_data_input_stream_read_line_async 在 Gnome Shell 扩展中读取套接字流

    我正在尝试编写一个 Gnome Shell 扩展 通过 Socket 服务器与 Arduino 进行通信 服务器和 Arduino 运行良好 但我陷入了监听传入服务器消息的扩展代码 因为我需要一种非阻塞方法 所以使用异步读取行 https

随机推荐

  • Cucumber 中的日期对象

    我有一个像这样的黄瓜stepdef Given the date of
  • Resteasy 3 与 Spring 3 集成不起作用

    我有一个使用 Resteasy 和 Spring 的项目 我之前使用的Resteasy版本是2 3 5 运行良好 没有问题 不过 我最近将 Resteasy 版本升级到 3 0 3 Final 当我部署到 jboss 时 它抛出了一些异常
  • 使用 http.get Flutter 检索 Utf-8 字符集的无效阿拉伯字符

    嗨 我正在尝试从互联网获取数据 https flutter io cookbook networking fetch data in flutter并且只要其中的所有字符response body是英语 一切都很好 但我得到这些结果pers
  • tf.keras.utils.get_file() 可以用来加载本地 zip 文件吗?

    我有包含 4 个图像文件夹的 zip 文件 我在 Google Colab 上遵循的教程使用类似的 zip 文件 但该文件在线托管 并且链接以以下值给出origin这是必需的参数 我已将 zip 文件上传到 Google Drive 并可以
  • 为什么 Java 中的浮点数添加似乎不正确? [复制]

    这个问题在这里已经有答案了 可能的重复 JavaScript 的数学有问题吗 https stackoverflow com questions 588004 is javascripts math broken Java浮点运算 http
  • PostGIS函数将几何线连接在一起?

    注意 the geom 是一个几何值 类型 LINESTRING 在这种情况下 我将它们随机化以提高可读性 gid kstart kend ctrl sec no the geom the sum geom 626 238 239 1208
  • asp.net:如何检测iOS/Android?

    我最近推出了一个用 C net 4 0 编写的 Web 应用程序 广泛使用 jQuery 和 jQuery UI 来提供最佳的用户体验 然而 一些用户报告通过 iPhone 或 Android 设备使用该网站时出现问题 检测 iOS 和 A
  • AsQueryable() 的目的是什么?

    目的是AsQueryable 只是为了让你可以传递一个IEnumerable到可能期望的方法IQueryable 或者有一个有用的理由来表示IEnumerable as IQueryable 例如 是否应该适用于这样的情况 IEnumera
  • 从 ext3 linux 安全地删除文件

    这个问题过去已经被提出过 并取得了不同程度的成功 是否有工具或 C C unix 函数可供调用 使我能够检索文件在磁盘上的位置 不是文件的某个虚拟地址 而是文件所在的磁盘 扇区 块 这里的目标是能够覆盖磁盘上存在的实际位 我可能需要一种方法
  • Vagrant、Codeception 和 Laravel 问题。未发现Http异常

    我正在尝试使用代码接收 http codeception com用于我的验收测试 我的一项测试有以下内容
  • 为什么 WideString 不能用作互操作的函数返回值?

    我不止一次建议人们使用类型的返回值WideString出于互操作目的 访问 Delphi DLL 偶尔抛出异常 https stackoverflow com questions 8533505 accessing delphi dll t
  • Create-React-App:在本地计算机上部署时出现 ESlint 错误

    我正在使用 create react app React v16 12 0 当我运行时出现以下错误 npm start 在苹果电脑上 1 There might be a problem with the project dependenc
  • Joomla 文章上显示的主页模块

    我在主页上有自定义 HTML 和其他模块 这些模块已标记为仅在主页上显示 我的主页上也有带有 阅读更多 链接的文章 问题是 当我单击这些 阅读更多 链接时 页面会打开 所有主页模块仍然存在 并且文章显示在这些模块下方 我已检查设置所有模块都
  • jQuery 选择器 - 匹配元素的内容

    有没有什么办法 任何 jQuery 选择器 我没有发现http api jquery com category selectors http api jquery com category selectors 这可以用作精确匹配吗 包含 h
  • Pygame 缩放精灵

    如何将精灵的图像放大或缩小 我可以更改矩形和所有内容 但不能更改图像 代码 虽然我不确定为什么你需要它 class test pygame sprite Sprite def init self pygame sprite Sprite i
  • .net - C# 2.0 应用程序中的玻璃效果

    如何在 net 2 0 中的 Windows 窗体应用程序上提供 Vista 或 Mac OS X 风格的玻璃效果 这是通过使用 Vista DWM 桌面窗口管理器 API 的互操作来完成的 例如 导入这些函数 DllImport dwma
  • @BeanProperty 具有 PropertyChangeListener 支持吗?

    BeanProperty生成简单的get set方法 有没有办法自动生成此类方法并支持触发属性更改事件 例如 我想将其与 JFace 数据绑定一起使用 我也有同样的问题 并一直在密切关注可能的答案 我想我刚刚偶然发现了一个 尽管我还没有尝试
  • 类路径中的 Flutter 运行时 JAR 文件应具有相同的版本

    Building without sound null safety For more information see https dart dev null safety unsound null safety w Runtime JAR
  • 小阴谋家 - 从哪里开始?

    我刚刚打开 小阴谋家 我觉得我错过了一些东西 第一个问题问 这是一个原子吗 但我没有看到原子是什么的任何定义 我想我可以通过问题的答案推导出什么是原子 但随后它继续问 l 的 car 是什么 l 的 cdr 是什么 我不知道在问什么 这本书
  • AngularJS:工厂 $http 服务

    我试图理解 Angular 中工厂和服务的概念 我在控制器下有以下代码 init function init http post services type getSource ID TP001 success function data