So, What's the basic difference between running code when a controller starts and running code in a route resolver?
The basic difference is when a controller starts activation happens after the route and when we use route resolver activation happens before the route.
There may be many cases when you need to use route resolver to run few functions or ajex calls before the controller gets activated.
Those cases could be like
Then for those cases we can use Use AngularUI Router and nested resolves to move data-loading logic out of the controller and avoid code duplication and coupling between controllers.
So how it's done... You can follow the below snippet. The code is self explanatory
The basic difference is when a controller starts activation happens after the route and when we use route resolver activation happens before the route.
There may be many cases when you need to use route resolver to run few functions or ajex calls before the controller gets activated.
Those cases could be like
- When you want to validate user crediantial.
- Run controllers only after initialization is completed,
- When your page elements blink due to changine routes.
Then for those cases we can use Use AngularUI Router and nested resolves to move data-loading logic out of the controller and avoid code duplication and coupling between controllers.
So how it's done... You can follow the below snippet. The code is self explanatory
Is there a way to show some ajax wait message during Resolve ?
ReplyDelete
DeleteYes.. The API provides you with two event hooks: $stateChangeStart and $stateChangeSuccess. We can use them in main controller like.
$scope.showSpinner = false;
$scope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
if (toState.resolve) {
$scope.showSpinner =true;
}
});
$scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {
if (toState.resolve) {
$scope.showSpinner = false;
}
});
I update the fiddle also.