A module that makes decisive routing super easy.
Add ngRouteBlocker to required modules list
angular.module('myApp', [ …, 'ngRouteBlocker' ]);
Add block function route:
module.config(function($routeProvider) {
$routeProvider.when('url', {
templateUrl : 'template.html',
controller : 'ControllerName',
block : function() {
…
return true;
}
})
})
Whenever a $locationChangeStart event is triggered it will go through all registered routes and decide (by triggering the described block function) if we can continue with the location change or not.
In order to continue routing then the block function must return truthy values.
If the block function returns truthy values then it will just continue with the routing.
If the method returns falsy result then it will cancel the location change event so it would never reach the route configuration (no template download? jay).
By using $routeBlockerProvider its possible to define multiple properties to search from a route.
The default property that RouteBlocker uses is block.
$routeBlockerProvider has an api that consist of three methods:
#getPropertiesreturns an array of defined properties#addPropertyprovides an easy function for adding one or multiple property names. All property names must bestrings. To add multiple names at once one must pass an array of property names to#addPropertyfunction#removePropertya way to remove property names from the list. Can be used with an array.
The block function works with dependency injection. It works with all three methods of dependency injection.
- using
$injector - using
array - plain function injection
npm install
bower install
grunt test
grunt build
