My solution is to use resolve
option of $routeProvider.when()
method.
This will prevent controller to load before request to data is finished:
$routeProvider.when('/books', {
templateUrl: 'books',
controller: 'bookCtrl',
resolve: {
appUser: function (user) {
// we're injecting "user" service
// and initiliazing it (this method returns $promise)
return user.initialize();
}
}
});
And inside bookCtrl
just injecting appUser
as a dependency.