2013-08-21 2 views
13

В настоящее время я создаю новое свойство в $ rootScope и устанавливаю его значение в одном модуле.AngularJS - значение свойства root root не определено в сервисе

$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 в сервисах? Или я пытаюсь получить это значение ненадлежащим образом?


UPDATE - я создал Plunker, демонстрирующий вопрос, который я бег в. http://plnkr.co/edit/ePEiYh

+0

Как о попытке '.factory ("testFactory", [ "$ местоположение", "$ HTTP", $ rootScope ", функция ($ location, $ http, $ rootScope) {...}]);' – tymeJV

+1

Убедитесь, что вы выполняете '$ rootScope.test = 123;' перед тем, как вы выполните 'testFactory.testFunction();' – AlwaysALearner

+0

Как вы это решили? Я сталкиваюсь с одной и той же проблемой. В консоли я вижу атрибут в первом console.log, но во втором при попытке распечатать атрибут сам по себе не указан –

ответ

9

Это должно работать нормально:

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

myApp.run(['$rootScope', function($rootScope){ 
    $rootScope.test = 123; 
}]); 

myApp.controller('AppController', ['$rootScope', function ($rootScope) { 
    console.log($rootScope.test); 
}]); 

Plunker: http://plnkr.co/edit/7NTGOK

Я предполагаю, что вы чтение Значение, прежде чем вы писать это. Не могли бы вы поделиться больше кода?

UPDATE

опыт отладки действительно странно здесь. Тем не менее, в моем обновленном plunker вы можете видеть сквозь временные метки, что запись происходит после чтения:

http://plnkr.co/edit/pn5Wxk

+0

К сожалению, я не смог опубликовать фотографию, но на моей консоли Chrome, когда я сначала распечатаю console.log ($ rootScope) и разворачиваю объект, я вижу «test: 123». После этой строки я печатаю console.log ($ rootscope.test), и он отображается как неопределенный. Как я мог увидеть значение в журнале с помощью $ rootScope, но не как $ rootScope.test? – ral8

+1

Звучит странно, но всегда есть причина. Можете ли вы попытаться собрать небольшой тестовый пример в plunkr? Или у вас есть приложение, доступное где-то в Интернете? – Christoph

+0

Я отредактировал исходный вопрос и добавил ссылку plunker. – ral8

Смежные вопросы