加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AngularJS中的全局变量

发布时间:2020-12-17 09:36:53 所属栏目:安全 来源:网络整理
导读:我有一个问题,我在控制器中的范围上初始化一个变量。然后,当用户登录时,它会在另一个控制器中更改。此变量用于控制导航栏等内容,并根据用户类型限制对网站部分的访问,因此保留其值很重要。它的问题是,初始化它的控制器,通过角度一些如何被再次调用,
我有一个问题,我在控制器中的范围上初始化一个变量。然后,当用户登录时,它会在另一个控制器中更改。此变量用于控制导航栏等内容,并根据用户类型限制对网站部分的访问,因此保留其值很重要。它的问题是,初始化它的控制器,通过角度一些如何被再次调用,然后将变量重置回其初始值。

我认为这不是正确的方式声明和初始化全局变量,它不是真正的全局变量,所以我的问题是什么是正确的方法,有什么好的例子,围绕当前版本的角度的工作。

对于“全局”变量,基本上有两个选项:

>使用$ rootScope http://docs.angularjs.org/api/ng.$rootScope
>使用服务http://docs.angularjs.org/guide/services

$ rootScope是所有范围的父级,所以暴露的值将在所有模板和控制器中可见。使用$ rootScope非常容易,因为您可以简单地将它注入任何控制器并更改此范围中的值。这可能很方便,但所有的problems of global variables。

服务是单例,可以注入到任何控制器,并在控制器的范围内公开它们的值。服务,单身人士仍然是“全球性的”,但你已经更好地控制了那些使用和暴露的地方。

使用服务有点复杂,但不是那么多,这里是一个例子:

var myApp = angular.module('myApp',[]);
myApp.factory('UserService',function() {
  return {
      name : 'anonymous'
  };
});

然后在控制器中:

function MyCtrl($scope,UserService) {
    $scope.name = UserService.name;
}

这里是工作jsFiddle:http://jsfiddle.net/pkozlowski_opensource/BRWPM/2/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读