Как вы объявляете глобальную переменную с помощью Angular Js?
Я хочу переменную, которая может использоваться во всех контроллерах, но не хочет создавать для нее сервис. Возможно ли это в angular js?
Ответы
Ответ 1
Вы можете использовать константы или значения .
Константы
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);
}]);
http://ilikekillnerds.com/2014/11/constants-values-global-variables-in-angularjs-the-right-way/
Ответ 2
Используйте value()
для определения объекта и сохранения ваших глобальных переменных в качестве свойств этого объекта. Затем добавьте объект в зависимость от любого контроллера, которому необходимо получить доступ к его свойствам. Это имеет положительный побочный эффект, заключающийся в инкапсуляции всех ваших переменных в один объект, который является аккуратным и менее вероятным для столкновения пространства имен.
Здесь шаблон:
app.value('myVars', {
usersOnline:0
});
app.controller('TestCtrl', ['myVars', function TestCtrl(myVars) {
console.log(myVars.usersOnline);
myVars.usersOnline = 15;
console.log(myVars.usersOnline);
}]);
Ответ FYI 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);
}]);
Ответ 3
Вы можете установить эту переменную на $rootScope. и вводить $rootScope в контроллеры, которые будут использовать глобальные.