Short version of my question is: How do I change the URL without need to trigger route change or without need to run all the controllers on the currently displayed page?
Sounds like you don't want to use $route service.
The $route
service is designed to reload the controllers so that there is no difference between navigating to a URL and refreshing the URL. We do this by doing a full reload on every URL change. This is intentional.
Sounds like your use case, should not be using $route
, just $location and ng-include.