我有一个问题,我在控制器的作用域中初始化了一个变量。然后当用户登录时,在另一个控制器中更改它。这个变量用于控制诸如导航栏之类的东西,并根据用户类型限制对站点的某些部分的访问,因此保持其值非常重要。问题在于,初始化它的控制器会被 Angular 再次调用,然后将变量重置为其初始值。
我认为这不是声明和初始化全局变量的正确方法,实际上它并不是真正的全局变量,所以我的问题是什么是正确的方法,是否有任何好的示例可以与当前版本的 Angular 一起使用?
我有一个问题,我在控制器的作用域中初始化了一个变量。然后当用户登录时,在另一个控制器中更改它。这个变量用于控制诸如导航栏之类的东西,并根据用户类型限制对站点的某些部分的访问,因此保持其值非常重要。问题在于,初始化它的控制器会被 Angular 再次调用,然后将变量重置为其初始值。
我认为这不是声明和初始化全局变量的正确方法,实际上它并不是真正的全局变量,所以我的问题是什么是正确的方法,是否有任何好的示例可以与当前版本的 Angular 一起使用?
这其实很简单。(如果你正在使用 Angular 2+ 的话。)
只需添加
declare var myGlobalVarName;
在组件文件的顶部某处(例如在“import”语句之后),您将能够在组件内的任何地方访问“myGlobalVarName”。
你也可以像这样做...
function MyCtrl1($scope) {
$rootScope.$root.name = 'anonymous';
}
function MyCtrl2($scope) {
var name = $rootScope.$root.name;
}