Home » Angularjs » AngularJS app.run() documentation?

AngularJS app.run() documentation?

Posted by: admin November 2, 2017 Leave a comment

Questions:

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.

Answers:

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 service 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.

Questions:
Answers:

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'
});