AngularJS app.run() documentation?

Angularjs

Angularjs 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:

  1. app.config()
  2. app.run()
  3. directive's compile functions (if they are found in the dom)
  4. app.controller()
  5. 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'
});

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser3071284View Question on Stackoverflow
Solution 1 - AngularjsKayakDaveView Answer on Stackoverflow
Solution 2 - AngularjsMichael ColeView Answer on Stackoverflow