Angularjs resolve with controller as string

angularjs

Solution

The controller definition and resolve parts are to be specified separately on the route definition.

If you define controllers on a module level you need to reference them as string, so:

 $routeProvider.when('/someroute', {
        templateUrl: 'partials/someroute.html', 
        controller: 'myController',
        resolve: {
          myVar: function(){
            //code to be executed before route change goes here
          };
        });

The above code also shows how to define a set of variables that will be resolved before route changes. When resolved those variables can be injected to a controller so taking the example from the snippet above you would write your controller like so:

.controller('myController', ['$scope', 'myVar', function($scope, myVar) {
            // myVar is already resolved and injected here
        }
    ]);

This video might help as well: http://www.youtube.com/watch?v=P6KITGRQujQ

Problem

My style of writing angular controllers is like this (using controller name instead of function) ``` angular.module('mymodule', [ ]) .controller('myController', [ '$scope', function($scope) { // Some code here } ]); ``` What I need now is when providing i routes I want to define resolve part: ``` $routeProvider.when('/someroute', { templateUrl: 'partials/someroute.html', resolve: myController.resolve}) // THIS IS THE CRITICAL LINE ``` Since controller is defined as a name how to accomplish resolve part bellow? To clarify more in details I want to load some data from server before route is resolved and then use these data in controller. UPDATE: To be more precise I want each module has its "resolve" function that will be called before root with that controller is executed. Solution in this post (answered by Misko Hevery) does exactly what I want but I don't have controllers as functions but as a names.

Original source

Related problems