【发布时间】:2013-08-21 13:02:09
【问题描述】:
我目前正在 $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
【问题讨论】:
-
试试
.factory("testFactory", ["$location", "$http", $rootScope", function($location, $http, $rootScope) { ... }]);怎么样 -
确保你在做
$rootScope.test = 123;之前你做testFactory.testFunction(); -
你是怎么解决这个问题的?我正在解决完全相同的问题。在控制台中,我可以在第一个 console.log 中看到该属性,但在第二个中尝试打印属性本身时,它是未定义的
-
我最终在 $rootScope 上使用 $dispatch 在设置值时通知工厂函数,这在此处的示例中显示 - youtube.com/watch?v=1OALSkJGsRw 。这可能不是最优雅的解决方案,但适用于我的场景。
标签: javascript angularjs