2013-08-21 11 views
13

Obecnie tworzę nową właściwość w $ rootScope i ustawiając jej wartość w jednym module.

$rootScope.test = 123; 

Próbuję później odwołać się do tej wartości w funkcji serwisowej.

.factory("testFactory", function ($location, $http, $rootScope) { 
    /* .... */ 
    return { 
     testFunction : function(){ 
      console.log($rootScope); 
      console.log($rootScope.test); 
     }, 
     /* .... */ 

Kiedy przeglądam wyjścia konsoli w Chrome, widzę, że wartość testu jest ustawiony prawidłowo w obiekcie $ rootScope, ale nie jestem w stanie odwołać się za pomocą składni $ rootScope.test. $ rooScope.test po prostu wraca undefined.

Czy istnieje jakiś powód, dla którego nie można podać wartości właściwości $ rootScope w usługach? Czy próbuję odzyskać tę wartość nieprawidłowo?


UPDATE - Stworzyłem Plunker który pokazuje problem, który używam do. http://plnkr.co/edit/ePEiYh

+0

Jak o próbie Fabryce umiejscowionej '("testFactory"[ "$ lokalizację", "$ http", $ rootScope ", funkcja ($ location, $ http, $ rootScope) {...}]);' – tymeJV

+1

Upewnij się, że robisz '$ rootScope.test = 123;' zanim zrobisz 'testFactory.testFunction(); – AlwaysALearner

+0

W jaki sposób to rozwiązałeś? Przebiegam dokładnie ten sam problem.W konsoli widzę atrybut w pierwszym pliku console.log, ale w drugim przy próbie wydrukowania samego atrybutu jest on niezdefiniowany –

Odpowiedz

9

ten powinien działać dobrze:

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

Chyba że jesteś czytanie wartość przed jesteś pisanie to. Czy możesz udostępnić więcej kodu?

UPDATE

debugowania doświadczenie jest tutaj naprawdę dziwne. Jednak w moim zaktualizowanej plunker widać przez znaczniki czasu, że pisanie dzieje po czytaniu:

http://plnkr.co/edit/pn5Wxk

+0

Niestety, nie mogłem opublikować obrazu, ale w mojej konsoli Chrome, po wydrukowaniu najpierw console.log ($ rootScope) i rozwinięciu obiektu, widzę "test: 123". Po tej linii wydrukuję plik console.log ($ rootscope.test) i pojawi się jako niezdefiniowany. Jak mogę zobaczyć wartość w dzienniku za pomocą $ rootScope, ale nie jako $ rootScope.test? – ral8

+1

Brzmi dziwnie, ale zawsze jest jakiś powód :) Czy możesz spróbować złożyć małą próbkę w plunkr? A może Twoja aplikacja jest dostępna online? – Christoph

+0

Edytowałem oryginalne pytanie i dodałem link plunker. – ral8

Powiązane problemy