在Angular的run()方法中获取$ scope对象

当我的应用程序加载设置默认状态时,我想做一些事情。 所以我试图在Module对象上使用run方法。 当我尝试访问$ scopevariables,虽然我得到一个“Uncaught ReferenceError:$ scope is not defined”消息在我的控制台。

看下面的例子http://jsfiddle.net/F2Z2X/1/

app = angular.module('myapp', []); app.controller('mycontroller', function($scope){ $scope.data = { myvariable: 'Hello' }; }); app.run( alert($scope.data.myvariable)) ); 

我是否全部错了?

例如,我想在开始时运行一次watchAction函数,以隐藏尚未调用的UI元素,但是watchAction函数没有$ scope对象,因为它没有被watch方法调用,所以我必须把它传递给它,但唉,它不可用。

 app.run(function ($rootScope) { $rootScope.someData = {message: "hello"}; }); 

您只能将$rootScope注入到servicesrun函数,因为每个child scope都从其父作用域inheritance,而最高级作用域是rootScope 。 因为注入任何范围都是不明智的。 只提供根作用域。

 var app = angular.module('myApp', []); app.run(function ($rootScope) { // use .run to access $rootScope $rootScope.rootProperty = 'root scope'; }); app.controller("ParentCtrl", ParentCtrlFunction); app.controller("ChildCtrl", ChildCtrlFunction); function ParentCtrlFunction($scope) { // use .controller to access properties inside ng-controller //in the DOM omit $scope, it is inferred based on the current controller $scope.parentProperty = 'parent scope'; } function ChildCtrlFunction($scope) { $scope.childProperty = 'child scope'; //just like in the DOM, we can access any of the properties in the //prototype chain directly from the current $scope $scope.fullSentenceFromChild = 'Same $scope: We can access: ' + $scope.rootProperty + ' and ' + $scope.parentProperty + ' and ' + $scope.childProperty; } 

例如。 https://github.com/shekkar/ng-book/blob/master/7_beginning-directives/current-scope-in​​troduction.html

这是简单的stream程,我们有rootScope,parentScope,childScope。在每个部分,我们正在分配相应的范围variables。我们可以访问childScope中的parentScope,rootScope和parentScope中的$ rootScope。