Issue
I would like to resolve the promise that loads the current user for all the pages of my application.
Currently I repeat the resolve in every $routeProvider.when()
of my routes.
$routeProvider.when('/users/edit/:userId', {
templateUrl: 'app/app/assets/partials/user-edit.html',
controller: 'UserEditController',
resolve:{
'currentUser':function( UserService){
return UserService.getCurrentUser();
}
}
});
$routeProvider.when('/staff_profil/edit', {
templateUrl: 'app/app/assets/partials/profil-edit.html',
controller: 'ProfilEditController',
resolve:{
'currentUser':function( UserService){
return UserService.getCurrentUser();
}
}
});
My goal is to resolve my current user for all the routes without repetition.
Solution
You could always wrap the existing when method on the $routeProvider
with your own implementation.
var myModule = angular.module('myModule', ['ngRoute'])
.config(['$routeProvider', function($routeProvider){
var originalWhen = $routeProvider.when;
$routeProvider.when = function(path, route){
route.resolve = {
'currentUser':function( UserService){
return UserService.getCurrentUser();
}
};
return originalWhen(path, route);
};
}]);
You probably want to add some error checking in there, and use something like underscores defaults
method instead of just overwriting the existing resolve property, but at least this way you can guarantee all your routes will have what you want.
It's also easy enough to wrap this up into a helper method.
Answered By - Josh
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.