Angularjs 如何使用Angular Js声明全局变量?

Angularjs 如何使用Angular Js声明全局变量?,angularjs,Angularjs,我想要一个可以在所有控制器中使用的变量,但不想为其创建服务。在angular js中是否可能?您可以在$rootScope上设置该变量。并将$rootScope注入将使用全局的控制器。您可以使用 常数 var app = angular.module('myApp', []); app.constant('appName', 'Application Name'); app.controller('TestCtrl', ['appName', function TestCtrl(appName

我想要一个可以在所有控制器中使用的变量,但不想为其创建服务。在angular js中是否可能?

您可以在$rootScope上设置该变量。并将$rootScope注入将使用全局的控制器。

您可以使用

常数

var app = angular.module('myApp', []);
app.constant('appName', 'Application Name');

app.controller('TestCtrl', ['appName', function TestCtrl(appName) {
    console.log(appName);
}]);
var app = angular.module('myApp', []);

app.value('usersOnline', 0);
app.controller('TestCtrl', ['usersOnline', function TestCtrl(usersOnline) {
    console.log(usersOnline);
    usersOnline = 15;
    console.log(usersOnline);
}]);

var app = angular.module('myApp', []);
app.constant('appName', 'Application Name');

app.controller('TestCtrl', ['appName', function TestCtrl(appName) {
    console.log(appName);
}]);
var app = angular.module('myApp', []);

app.value('usersOnline', 0);
app.controller('TestCtrl', ['usersOnline', function TestCtrl(usersOnline) {
    console.log(usersOnline);
    usersOnline = 15;
    console.log(usersOnline);
}]);

使用
value()
定义对象,并将“全局变量”存储为该对象的属性。然后将对象作为依赖项添加到需要访问其属性的任何控制器。这有一个积极的副作用,就是将所有变量封装到一个对象中,这个对象整洁,不太可能发生名称空间冲突

以下是模式:

app.value('myVars', {
    usersOnline:0
});
app.controller('TestCtrl', ['myVars', function TestCtrl(myVars) {
    console.log(myVars.usersOnline);
    myVars.usersOnline = 15;
    console.log(myVars.usersOnline);
}]);
仅供参考,Aseem的答案行不通,因为他的示例将
value()
与基元类型一起使用。要明确哪些不起作用:

app.value('usersOnline', 0);
app.controller('TestCtrl', ['usersOnline', function TestCtrl(usersOnline) {
    console.log(usersOnline);
    usersOnline = 15; // <-- THIS WILL NOT PERSIST outside the controller.
    console.log(usersOnline);
}]);
app.value('usersOnline',0);
app.controller('TestCtrl',['usersOnline',函数TestCtrl(usersOnline){
console.log(usersOnline);

usersOnline=15;//这是可能的-请看@Alan answer-但不建议这样做。变量包含什么?您应该使用Aseem的答案,利用$rootScope作为变量被认为是角度世界中的一个重大设计缺陷。这就是服务/工厂存在的原因。Matthew完全正确。如果未能将值定义为对象,则c特定控制器内的挂起值不会在外部延长。