gpt4 book ai didi

angularjs - AngularJS 中的全局变量

转载 作者:行者123 更新时间:2023-12-01 17:28:37 26 4
gpt4 key购买 nike

我在初始化 Controller 范围内的变量时遇到问题。然后,当用户登录时,它会在另一个 Controller 中发生更改。该变量用于控制导航栏等内容,并根据用户类型限制对网站部分内容的访问,因此保持其值很重要。它的问题是初始化它的 Controller ,以某种方式再次被 Angular 调用,然后将变量重置回其初始值。

我认为这不是声明和初始化全局变量的正确方法,它不是真正的全局变量,所以我的问题是正确的方法是什么,是否有任何与当前版本的 Angular 一起使用的好例子?

最佳答案

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

$rootScope 是所有范围的父级,因此公开的值将在所有模板和 Controller 中可见。使用 $rootScope 非常简单,因为您只需将其注入(inject)任何 Controller 并更改此范围内的值即可。它可能很方便,但拥有所有 problems of global variables .

服务是单例,您可以将其注入(inject)任何 Controller 并在 Controller 的范围内公开它们的值。作为单例的服务仍然是“全局的”,但您可以更好地控制这些服务的使用和公开位置。

使用服务有点复杂,但也不是那么复杂,下面是一个例子:

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

然后在 Controller 中:

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

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

关于angularjs - AngularJS 中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11938380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com