Angular.js:如何为所有应用程序控制器调用一次服务

2023-12-08

我不知道这是否是 Angular 概念之一或可能做到的,但我有一项调用用户信息(姓名、id、年龄……)的服务:

.factory('me', function($resource, API_URL, $q) {
    return {
        getUser: function() {
            var deferred = $q.defer();
            var url = API_URL + 'api/me';
            $resource(url)
                .get(function(user) {
                    deferred.resolve(user);
                }, function(response) {
                    deferred.reject(response);
                });
            return deferred.promise;
        }
    };
})

我在很多地方都使用这项服务controllers得到user数据并用它与其他人一起发送http来电。例如在我的newItemCtrl

.controller('newItemCtrl', function($scope, $http, API_URL, me) {

我打电话给me服务就像我在许多其他控制器中所做的那样

我想知道是否有一种方法可以仅调用此服务一次并在所有控制器中使用它,而不是在每个控制器中使用 x 次


我一直对服务执行类似的操作,方法是在服务第一次返回后将值设置为服务。现在,一旦在服务中设置了数据,它将返回存储的用户数据,而不是向服务器发出请求。

service('myService', function($q, $http) {
  this.data;
  var self = this;

  this.getMyData = function() {
    if (angular.isDefined(self.data)) {
      // use $q to return a promise
      return $q.when(self.data)
    }
    return $http.get('myurl').then(function(resp) {
      self.data = resp;
    })
  }

}

在你的控制器中你可以调用myService.getMyData()

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

Angular.js:如何为所有应用程序控制器调用一次服务 的相关文章

随机推荐

  • 如何使用更新查询更新 cassandra 中的集群键?

    这是我的表结构 我正在使用以下查询更新序列 Update styles set sequence 1 where styleid CLASSIC 我收到错误消息为 PRIMARY KEY part sequence found in SET
  • 如何获取表中每一列的 false 数?

    我有一个表 T myTable 它有 5 列 并且所有列都有一些值 true 或 false col1 col2 col3 col4 col5 true false false true false false true false fal
  • getRepository 原则中不存在类

    我对教义和交响乐都很陌生 我使用 ORM 学说创建了一个带有 curd 操作的小应用程序 我的插入操作正在运行 但我的列表操作抛出一个error as 学说 通用 持久性 映射 映射异常 类 Tab 不存在 我将在这里粘贴我的代码 我的模型
  • Java try/catch/finally 获取/关闭资源时的最佳实践

    在做一个学校项目时 我编写了以下代码 FileOutputStream fos ObjectOutputStream oos try fos new FileOutputStream file oos new ObjectOutputStr
  • 编写自定义 Kafka 序列化器

    我在 Kafka 消息中使用我自己的类 其中包含一堆字符串数据类型 因此 我无法使用默认的序列化器类或StringSerializerKafka 库附带的 我想我需要编写自己的序列化器并将其提供给生产者属性 EDIT 在较新的 Kafka
  • 使用 Netlify 和 Gatsby 缩短初始服务器响应时间

    我在跑PageSpeed 见解在我的网站上 我有时遇到的一个大错误是 减少初始服务器响应时间 保持主文档的服务器响应时间较短 因为所有 其他请求取决于它 了解更多 React 如果您在服务器端渲染任何 React 组件 请考虑 使用rend
  • 握手失败并出现致命错误 SSL_ERROR_SSL

    我正在关注这个教程https hyperledger github io composer latest tutorials deploy to fabric multi org将 Composer 区块链业务网络部署到 Hyperledg
  • C# 如何循环用户输入直到输入的数据类型正确?

    如何使这段代码循环询问用户输入 直到int TryParse 成功了吗 setX public void setX take the input from the user string temp int temp2 System Cons
  • Matlab - 绘图标题中数字变量的简短格式

    我试图将变量放入绘图标题中 但无法生成 4 位小数的格式 如何避免标题中出现浮动格式 这是我使用的代码 subplot 3 2 1 hist X 10 str sprintf X N d Y d N Y M sum X N Mean spr
  • 从 Google Cloud 上的 Cloud Run 访问 Cloud SQL

    我有一个 Cloud Run 服务 可以通过以下方式访问 Cloud SQL 实例SQLAlchemy 但是 在 Cloud Run 的日志中 我看到CloudSQL connection failed Please see https c
  • 将指向成员函数的指针作为指向函数的指针传递

    情况是这样的 我结合使用 C SDL 和 GLConsole 我有一堂课 SDLGame 其中有Init Loop Render 等等 本质上 它保存了我的游戏类的逻辑 到目前为止 GLConsole 是一个不错的库 它允许我定义 CVar
  • 在 Matlab 中从命令行运行特定的单元格部分?

    我在脚本中手动循环遍历 Matlab 中的各个单元 我们称之为 foo m Code for cell 1 Code for cell 2 从 Matlab 的命令行中 我希望能够有选择地运行单元格 2 中的代码 文档仅包含如何以交互方式执
  • 在node js中使用node-oracledb将对象作为输入参数传递给存储过程

    我有一个存储过程 它接受两个输入参数并给出一个输出参数 输入参数第一个是Oracle自定义类型 第二个是CHAR类型输出参数为Number类型 PROCEDURE SOMEPROCEDURE P REC IN RV SEARCH CRITE
  • 如何在后台运行 Windows Phone 应用程序?

    我想知道 Windows Phone 应用程序是否可以在后台运行 我学过http msdn microsoft com en us library ff431744 v vs 92 aspx 在那里我找到了有关后台文件传输 代理和警报的信息
  • JavaScript 内部的国际化

    我有一个 JSP 页面 它接受超过 23 种语言的用户字符串 所以一个说英语的用户写道8 5 JavaScript 函数应该接受它以及输入8 5来自俄罗斯用户 在这种情况下 我们如何验证所有语言的 JavaScript 输入 您可能可以使用
  • PHP strtotime 错误(有时)?

    我在我的 PHP 代码中遇到了 strtotime 的问题 有时它是错误的 仅对于某些时区 而对于其他时区来说它是正确的 我无法理解它 我已经设置了也在我的页面顶部 但这没有帮助 基本上它的作用是添加或减去offset 3600值到设定时间
  • 迭代多个查询并将其存储在 pyspark dataframe 中

    我在 hive 中有一个表 我想根据循环中的条件查询它 并将结果动态存储在多个 pyspark 数据帧中 基本查询 g1 select from db hive table where group 1 group 1 spk sql g1
  • Javascript 如何匹配回调函数中的参数?

    我刚开始学习JavaScript 回调函数似乎很难理解 我的一个问题是javascript如何匹配回调函数中的参数 例如在以下 forEach 循环中 var friends Mike Stacy Andy Rick friends for
  • 如何迭代两个列表?

    我正在尝试在 pyGTk 中做一些事情 我构建了一个 HBox 列表 self keyvalueboxes for keyval in range 1 self keyvaluelen self keyvalueboxes append g
  • Angular.js:如何为所有应用程序控制器调用一次服务

    我不知道这是否是 Angular 概念之一或可能做到的 但我有一项调用用户信息 姓名 id 年龄 的服务 factory me function resource API URL q return getUser function var