AngularJS中的全局变量

前端之家收集整理的这篇文章主要介绍了AngularJS中的全局变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个问题,我在控制器中的范围上初始化一个变量。然后,当用户登录时,它会在另一个控制器中更改。此变量用于控制导航栏等内容,并根据用户类型限制对网站部分的访问,因此保留其值很重要。它的问题是,初始化它的控制器,通过角度一些如何被再次调用,然后将变量重置回其初始值。

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

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

>使用$ 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/

猜你在找的Angularjs相关文章