在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
注入到services
并run
函数,因为每个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; }
这是简单的stream程,我们有rootScope,parentScope,childScope。在每个部分,我们正在分配相应的范围variables。我们可以访问childScope中的parentScope,rootScope和parentScope中的$ rootScope。