AngularJS app.run() documentation?
AngularjsAngularjs Problem Overview
How and where is app.run()
used? After module definition, after app.config()
or after app.controller()
?
I am adopting the BreezeJS Angular Q, which asks whether certain code can be run in the app.run()
function.
Angularjs Solutions
Solution 1 - Angularjs
Here's the calling order:
app.config()
app.run()
- directive's compile functions (if they are found in the dom)
app.controller()
- directive's link functions (again, if found)
Here's a simple demo where you can watch each one executing (and experiment if you'd like).
From Angular's module docs:
> Run blocks - get executed after the injector is created and are > used to kickstart the > application. Only instances and constants can be injected into run blocks. This is to prevent > further system configuration during application run time. > > Run blocks are the closest thing in Angular to the main method. A run > block is the code which needs to run to kickstart the application. It > is executed after all of the services have been configured and the > injector has been created. Run blocks typically contain code which is > hard to unit-test, and for this reason should be declared in isolated > modules, so that they can be ignored in the unit-tests.
One situation where run blocks are used is during authentications.
Solution 2 - Angularjs
Specifically...
> How and where is app.run()
used? After module definition or after
> app.config()
, after app.controller()
?
Where:
In your package.js E.g. /packages/dashboard/public/controllers/dashboard.js
How:
Make it look like this
var app = angular.module('mean.dashboard', ['ui.bootstrap']);
app.controller('DashboardController', ['$scope', 'Global', 'Dashboard',
function($scope, Global, Dashboard) {
$scope.global = Global;
$scope.package = {
name: 'dashboard'
};
// ...
}
]);
app.run(function(editableOptions) {
editableOptions.theme = 'bs3'; // bootstrap3 theme. Can be also 'bs2', 'default'
});