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

时间:2013-08-21 13:02:09

标签: javascript angularjs

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

$rootScope.test = 123;

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

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

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

您是否有任何理由不能在服务中引用$ rootScope的属性值?或者我是否试图不正确地检索此值?


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

1 个答案:

答案 0 :(得分: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

我猜你在之前正在阅读

<强>更新

这里的调试体验非常奇怪。但是,在我更新的plunker中,您可以看到写入后读取的时间戳:

http://plnkr.co/edit/pn5Wxk