angular js - Изменить путь, но не перезагружать контроллер - PullRequest
0 голосов
/ 13 января 2020

Я попробовал решение здесь: https://www.consolelog.io/angularjs-change-path-without-reloading/

app.run(['$route', '$rootScope', '$location', function ($route, $rootScope, $location) {
    var original = $location.path;
    $location.path = function (path, reload) {
        if (reload === false) {
            var lastRoute = $route.current;
            var un = $rootScope.$on('$locationChangeSuccess', function () {
                $route.current = lastRoute;
                un();
            });
        }
        return original.apply($location, [path]);
    };
}])

Но путь, который я установил, просто расходуется и возвращается к тому, как это было.

1 Ответ

0 голосов
/ 13 января 2020

Поведение по умолчанию маршрутизатора ngRoute заключается в перезагрузке ngView, когда путь изменяется и новый URL-адрес сопоставляется с текущим маршрутом.

Если для параметра reloadOnSearch установлено значение false, ngRoute не перезагрузит маршрут, когда только $location.search() или $location.hash() изменится:

app.config(function($routeProvider) {
    $routeProvider.when("/foo", {
        templateUrl: 'foo.html',
        controller: 'fooController',
        reloadOnSearch: false
    });
})

И приложение вызовет:

$location.hash({pageNumber: n});

A Событие $routeUpdate транслируется в области root (без перезагрузки маршрута). 1

...