function updateRoute() {
      var next = parseRoute(),
          last = $route.current;

      if (next && last && next.$route === last.$route
          && equals(next.pathParams, last.pathParams) && !next.reloadOnSearch && !forceReload) {
        last.params = next.params;
        copy(last.params, $routeParams);
        $rootScope.$broadcast('$routeUpdate', last);
      } else if (next || last) {
        forceReload = false;
        $rootScope.$broadcast('$beforeRouteChange', next, last);
        $route.current = next;
        if (next) {
          if (next.redirectTo) {
            if (isString(next.redirectTo)) {
              $location.path(interpolate(next.redirectTo, next.params)).search(next.params)
                       .replace();
            } else {
              $location.url(next.redirectTo(next.pathParams, $location.path(), $location.search()))
                       .replace();
            }
          } else {
            copy(next.params, $routeParams);
          }
        }
        $rootScope.$broadcast('$afterRouteChange', next, last);
      }
    }
@ngdoc method
@name angular.module.ng.$route#reload
@methodOf angular.module.ng.$route

@description
Causes `$route` service to reload the current route even if
{@link angular.module.ng.$location $location} hasn't changed.

As a result of that, {@link angular.module.ng.$compileProvider.directive.ngView ngView}
creates new scope, reinstantiates the controller.