2013-08-21 22 views
13

Şu anda $ rootScope içinde yeni bir özellik oluşturuyorum ve değerini tek bir modülde ayarlıyorum.

$rootScope.test = 123; 

Bu değeri daha sonra bir hizmet işlevinde kullanmaya çalışıyorum. Ben Chrome'da konsol çıktısını görüntülediğinizde

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

, ben testin değeri $ rootScope nesnesinde düzgün ayarlanmış edildiğini görebilirsiniz, ama ben $ rootScope.test sözdizimi kullanılarak referans alamıyorum. $ rooScope.test sadece tanımsız olarak döner.

Hizmetlerdeki $ rootScope'un özellik değerlerini referans gösterebilmenizin bir nedeni var mı? Yoksa bu değeri yanlış olarak almaya çalışıyorum mı?


GÜNCELLEME - ben içine çalıştırıyorum sorunu gösteren bir Plunker oluşturduk. http://plnkr.co/edit/ePEiYh

+0

, $ rootScope ", function ($ location, $ http, $ rootScope) {...}]);' – tymeJV

+1

TestFactory.testFunction(); 'işlevini gerçekleştirmeden önce' $ rootScope.test = 123; 'yaptığınızdan emin olun. – AlwaysALearner

+0

Bunu nasıl çözdünüz? Bende aynı sorunla karşılaşıyorum: Konsolda özniteliği ilk konsol.logda görebiliyorum ama ikincisinde özniteliği yazdırmaya çalışırken ikinci sırada tanımsız olarak geliyor –

cevap

9

Bu sadece iyi çalışması gerekir:

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

Senden önce değeri okuma olduğunu tahmin o yazma. Daha fazla kod paylaşabilir misiniz?

GÜNCELLEME

ayıklama deneyimi burada gerçekten garip. Ancak, benim güncellenen plunker size yazma okuma sonra olur damgaları görebilirler: "$ http", nasıl `.factory ("testFactory", [ "$ konumu" çalışırken yaklaşık

http://plnkr.co/edit/pn5Wxk

+0

Maalesef, resim gönderemedim, ancak Chrome konsolumda, önce console.log ($ rootScope) yazdırarak nesneyi genişlettiğimde, "test: 123" tan tanımlı görüyorum. Bu satırdan sonra console.log ($ rootscope.test) yazdım ve undefined olarak görünüyor. $ RootScope ile günlüğündeki değeri nasıl görebilirim, ama $ rootScope.test olarak değil? – ral8

+1

Gerçekten garip geliyor ama her zaman bir nedeni var :) Bir punkrede küçük bir test vakasını bir araya getirmeye çalışabilir misin? Veya uygulamanızı çevrimiçi bir yerde erişilebilir mi? – Christoph

+0

Orijinal soruyu düzenledim ve plunker bağlantısını ekledim. – ral8

İlgili konular