Reputation: 2078
I'd like to do some stuff when my app loads to set up the default state. So I'm trying to use the run method on the Module object. When I try to access the $scope variable though I get an "Uncaught ReferenceError: $scope is not defined" message in my console.
See the following example http://jsfiddle.net/F2Z2X/1/
app = angular.module('myapp', []);
app.controller('mycontroller', function($scope){
$scope.data = { myvariable: 'Hello' };
});
app.run(
alert($scope.data.myvariable))
);
Am I going about this all wrong?
For example, I want to run the watchAction function once at the beginning, to hide UI elements that aren't called for yet, but the watchAction function doesn't have the $scope object because it's not being called by the watch method so I have to pass it to it, but alas it's not available.
Upvotes: 37
Views: 44984
Reputation: 244
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;
}
It is simple flow ,we have rootScope,parentScope,childScope .in each section we are assigning the corresponding scope variables.we can access the $rootScope in parentScope, rootScope and parentScope in childScope.
Upvotes: 3
Reputation: 35478
app.run(function ($rootScope) {
$rootScope.someData = {message: "hello"};
});
You can only get $rootScope
injected to services
and run
function, because each child scope
is inherited from its parent scope and the top level scope is rootScope
. Since it would be ambigous to inject any scope. Only root scope is provided.
Upvotes: 78