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

时间:2013-11-25 08:52:41

标签: javascript angularjs angularjs-service

我是Angularjs的新手。我正在我的个人网站上工作,并使用角度。我希望人们能够登录。登录后我想在valueservice中存储用户名,以便它始终可用。我可以做吗。

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

感谢。

2 个答案:

答案 0 :(得分:1)

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

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

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

第二种方法是使用服务共享持久化数据。有关详细信息,请参阅the answer here


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

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

答案 1 :(得分:0)

您无法在模块配置功能中设置服务值,但您可以在模块运行块中执行此操作 来自棱角分明的官方文档:

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

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