angularjs自定义属性中的$rootScope在注入后消失



问题相关代码笔

我在主控制器中声明了$rootScope.myproperty,它可以在其他控制器中访问。

但在其中一个控制器中,我必须像使用$watch一样注入$rootScope。然后,当我检查回$rootScope.myproperty时,它变成了未定义的。奇怪为什么会发生这种事?

之所以发生这种情况,是因为您使用$rootScope作为变量并将对象分配给它

$rootScope = { myproperty: 'root abc' };

这是错误的。相反,你应该按如下方式添加属性,它就会起作用:

$rootScope.myproperty = 'root abc';

我已经更新了代码笔及其工作:http://codepen.io/anon/pen/RaeyJm

工作演示

问题是您已将$rootScope注入AttendeesCtrl控制器。您不需要将$rootScope注入控制器。当您注入$scope时,由于JavaScript的原型继承,您可以自动访问$rootScope中定义的任何内容。所以AttendeesCtrl控制器应该是这样的:

.controller('AttendeesCtrl', function($scope) {
  //I used $watch and $rootScope somehere so I have to inject $rootScope in this controller
  $scope.myproperty = $rootScope.myproperty;
});

有关详细信息,您可以查看AngularJS Scope层次结构。

希望能解决你的问题。

最新更新