AngularJS Paging With $location.path But No NgView Reload


Answer :

Instead of updating the path, just update query param with a page number.

set your route to ignore query param changes:

.... $routeProvider.when('/foo', {..., reloadOnSearch: false}) .... 

and in your app update $location with:

... $location.search('page', pageNumber); ... 

From this blog post:

by default all location changes go through the routing process, which updates the angular view.

There’s a simple way to short-circuit this, however. Angular watches for a location change (whether it’s accomplished through typing in the location bar, clicking a link or setting the location through $location.path()). When it senses this change, it broadcasts an event, $locationChangeSuccess, and begins the routing process. What we do is capture the event and reset the route to what it was previously.

function MyCtrl($route, $scope) {     var lastRoute = $route.current;     $scope.$on('$locationChangeSuccess', function(event) {         $route.current = lastRoute;     }); } 

My solution was to use the routeChangeStartbecausethatgivesyouthe"next"and"last"routes,youcancomparethemwithouttheneedofanextravariablelikeonrouteChangeStart because that gives you the "next" and "last" routes, you can compare them without the need of an extra variable like on locationChangeSuccess.

The benefit is being able to access the "params" property on both "next" and "last" routes like next.params.yourproperty when you are using the "/property/value" URL style and of course use $location.url or $location.path to change the URL instead of $location.search() that depends on "?property=value" URL style.

In my case I used it not only for that but also to prevent the route to change is the controller did not change:

$scope.$on('$routeChangeStart',function(e,next,last){   if(next.$$route.controller === last.$$route.controller){     e.preventDefault();     $route.current = last.$$route;     //do whatever you want in here!   } }); 

Personally I feel like AngularJS should provide a way to control it, right now they assume that whenever you change the browser's location you want to change the route.


Comments

Popular posts from this blog

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?