Angularjs 全局共享变量

Angularjs 全局共享变量,angularjs,Angularjs,在我的主控制器中,我有一个返回当前用户的用户服务 // Curr user userService.getCurrentUser().then(user => { mainCtrl.currUser = user; }); 是否有任何方法可以在其他控制器中使用currUser变量,而无需注入我的服务并在50个控制器中反复调用此方法 前 您可以选择,或者,如果您确定不使用提供商/服务 示例: myApp.controller('DemoController1', ['$scope'

在我的主控制器中,我有一个返回当前用户的用户服务

// Curr user
userService.getCurrentUser().then(user => {
    mainCtrl.currUser = user;
});
是否有任何方法可以在其他控制器中使用
currUser
变量,而无需注入我的服务并在50个控制器中反复调用此方法


您可以选择,或者,如果您确定不使用提供商/服务

示例:

myApp.controller('DemoController1', ['$scope', '$rootScope', function DemoController($scope,$rootScope) {
     $rootScope.currUser.fullName ="test";
}]);
然后访问它作为

myApp.controller('DemoController2', ['$scope', '$rootScope', function DemoController($scope,$rootScope) {
   var fullName =  $rootScope.currUser.fullName;
}])

您可以像下面这样使用
$rootScope

mainCtrl.$rootScope.currUser = user;
而另一个控制器,您可以恢复如下:

console.log(yourContrl.$rootScope.currUser.fullName);

你不想使用控制器注入吗?使用
注入器
它与注入器相同,但也不同:D。。。像这样。这样,您仍然可以使用服务、工厂或组件

var myApp = angular.module('myApp',[]);

myApp.controller('MyCtrl', function ($scope) {
    $scope.name = angular.injector(['data']).get('user').currUser.username;
});

angular.module('data', []).factory('user', function () {
    return {
      currUser: {
        username: 'Alfred'
      }
    }
});

注射有什么问题?注射是AngularJS中最好的东西之一。你应该使用服务,这是标准的方法。但是如果你不想那样做。。然后用index.html文件创建一个新的js文件,并在那里创建一个变量。。您将能够访问htis变量accross站点。请解释为什么Giovani的答案是正确的,而它与您的要求不匹配?->
不注入我的服务
请解释你为什么选择这个答案Ørnulf Arntsen?嘿Sajee,这样他需要注入$rootScope=):P他不想要注入。。。“为什么呢?”林和在注射服务方面有问题:P看看哪个答案是正确的:D我应该远离这个。“我不想打针”->“打针”->“好的”。@linha
var myApp = angular.module('myApp',[]);

myApp.controller('MyCtrl', function ($scope) {
    $scope.name = angular.injector(['data']).get('user').currUser.username;
});

angular.module('data', []).factory('user', function () {
    return {
      currUser: {
        username: 'Alfred'
      }
    }
});