Значение свойства angularJS - $rootScope undefined в сервисе
В настоящее время я создаю новое свойство в $rootScope и устанавливаю его значение в одном модуле.
$rootScope.test = 123;
Затем я пытаюсь ссылаться на это значение позже в сервисной функции.
.factory("testFactory", function ($location, $http, $rootScope) {
/* .... */
return {
testFunction : function(){
console.log($rootScope);
console.log($rootScope.test);
},
/* .... */
Когда я просматриваю вывод консоли в Chrome, я вижу, что значение теста устанавливается правильно в объекте $rootScope, но я не могу ссылаться с помощью синтаксиса $rootScope.test. $rooScope.test просто возвращает undefined.
Есть ли причина, по которой вы не можете ссылаться на значения свойств $rootScope в сервисах? Или я пытаюсь получить это значение неправильно?
ОБНОВЛЕНИЕ -
Я создал Plunker, который демонстрирует проблему, с которой я сталкиваюсь.
http://plnkr.co/edit/ePEiYh
Ответы
Ответ 1
Это должно работать просто отлично:
var myApp = angular.module("myApp", []);
myApp.run(['$rootScope', function($rootScope){
$rootScope.test = 123;
}]);
myApp.controller('AppController', ['$rootScope', function ($rootScope) {
console.log($rootScope.test);
}]);
Плункер: http://plnkr.co/edit/7NTGOK
Я предполагаю, что вы читаете значение, прежде чем писать его.
ОБНОВИТЬ
Опыт отладки здесь действительно странный. Тем не менее, в моем обновленном плункере вы можете видеть по временным меткам, что запись происходит после прочтения:
http://plnkr.co/edit/pn5Wxk