Angularjs,在运行时设置价值服务的值

Angularjs, setting the value of a value service at runtime

本文关键字:服务 设置 运行时 Angularjs      更新时间:2023-10-15

我是Angularjs的新手。我正在我的个人网站上工作,正在使用angular。我希望人们能够登录。登录后,我想将用户名存储在一个valueservice中,这样它就可以一直使用。我能做吗?

我尝试在config()函数中执行此操作,但没有成功。我使用配置功能的原因是,我在这里检查用户是否已经登录

谢谢。

有两种基本的存储数据的方法,这些数据应该在Angular中全局可用。

第一种是将其存储在$rootScope上。rootScope是所有其他作用域的根(顾名思义),因此它在所有模板中都可用,并且可以注入到任何控制器/服务等中。它的使用方式与普通的$scope类似,因此登录服务会执行以下操作:

app.service('LoginService', ['$rootScope', function($rootScope) {
    var user = {}; //Get the user somehow
    $rootScope.user = user;
}

第二种方法是使用服务共享持久化数据。请参阅此处的答案以了解更多信息。


在这种情况下,我会说使用第一个,使用$rootScope。当你有应该在全球范围内可用的东西时,rootScope非常适合,如果你有应该只在应用程序的几个部分之间共享的东西,请使用服务。

调用登录服务的好地方是app.run()方法。当应用程序启动时,它会首先运行(我相信在配置之后除外)。

您不能在模块配置函数中设置服务值,但可以在模块运行块中进行设置
来自棱角分明的官方文件:

  1. 配置块-在提供程序注册和配置阶段执行只有提供程序和常量才能注入到配置块中这是为了防止在服务完全配置之前意外实例化服务
  2. 运行块-在创建注入器后执行,并用于启动应用程序只有实例和常量才能注入到运行块中这是为了防止在应用程序运行时进行进一步的系统配置

相关链接:http://docs.angularjs.org/guide/module