AngularJS-服务中未定义$rootScope属性值

AngularJS - $rootScope property value undefined in service

本文关键字:rootScope 属性 未定义 服务 AngularJS-      更新时间:2023-09-26

我目前正在$rootScope中创建一个新属性,并在一个模块中设置其值。

$rootScope.test = 123;

稍后,我将尝试在服务函数中引用此值。

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

当我在Chrome中查看控制台输出时,我可以看到在$rootScope对象中正确设置了test的值,但我无法使用$rootScope.test语法进行引用$rooScope.test只是返回undefined。

有什么原因不能在服务中引用$rootScope的属性值吗?还是我试图不正确地检索此值?


更新-我创建了一个Plunker,展示了我遇到的问题。http://plnkr.co/edit/ePEiYh

这应该可以正常工作:

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

我猜你在之前正在读取值。

更新

这里的调试体验真的很奇怪。然而,在我更新的plunker中,你可以通过时间戳看到,写作发生在阅读之后:

http://plnkr.co/edit/pn5Wxk