$Окно.местоположение.функция reload ()

II внедрили на карте, где показаны клиенты от маркера. Карта, которую я использую, является листовкой с директивой для AngularJS.

Моя проблема в том, что когда я впервые обращаюсь к карте, она работает нормально, когда я меняю маршрут, она стирает все маркеры, возвращая экран карты, она загружается без маркеров и они отображаются только при перезагрузке страницы.

$Окно.местоположение.функция reload ().

Поэтому у меня возникла идея использовать $ window.местоположение.reload () при доступе к странице, где находится карта. Я вызываю функцию, когда я щелкаю значок меню (ярлык) страницы, ссылающейся на карту, и страница перезагружается, показывая маркеры снова.

vm.recarregarRota = function (){
    $window.location.reload();
}

Просмотр: это код, который загружает карту.

<div class="col-md-12 box_map" style="padding: 20px 30px 20px 30px;">
<div id="recent_activity" class="box_whiteframe_map">
    <leaflet defaults="vm.defaults" lf-center="vm.center" ng-init="vm.buscaEnderecoClientesEmpresas()" markers="vm.markers" width="100%" height="480px"></leaflet>
</div>

Контроллер: в контроллере находится функция, используемая для загрузки данных БД и назначения их маркерам. Также в этой функции я создаю маркеры. И расширить свойства карты, например, сказать ей, что ее начальное положение находится в такой координате ..

            vm.markers = new Array(); //CRIA MARKERS A SEREM UTILIZADOS NO MAP

    vm.buscaEnderecoClientesEmpresas = function() { //Function used to load DB data and assign to bookmarks. It is also in this function that I create the bookmarks ....

        vm.items.then(function(items) { // Read array of return
            relatoriosService.carregarEnderecoClientesEmpresas(dados).then(function(response) {
                if (response.data != 'null') {
                    vm.enderecoClientesEmpresas = response.data; //return array
                    angular.forEach(vm.enderecoClientesEmpresas, function(value, key) { //FOREACH UTILIZADO PARA PERCORRER ARRAY

                        vm.markers.push({
                            group: value.estado, //DATA FROM THE BD.
                            lat: value.latitude, //DATA FROM THE BD.
                            lng: value.longitude, //DATA FROM THE BD.
                            message: "teste",
                            icon: {
                                type: 'awesomeMarker',
                                prefix: 'fa',
                                icon: icon,
                                markerColor: color
                            },
                            label: {
                                options: {
                                    noHide: true
                                }
                            }
                        });
                    });
                } else {
                    vm.enderecoClientesEmpresas = '';
                }

            }, function(error) {
                console.log('Erro findSemEmail: ', error);
            });
        });
    }


    angular.extend(vm, { // 
EXTEND THE PROPERTIES OF THE MAP (MARKERS, INCIAL LOCATION ..)
        center: { // 
INITIAL LOCATION.
            lat: -27.952419,
            lng: -52.211667,
            zoom: 6
        },
        defaults: { //
LAYER IS THE TYPE OF MAP TO BE USED
            tileLayer: "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
            zoomControlPosition: 'topright',
            tileLayerOptions: {
                opacity: 0.9,
                detectRetina: true,
                reuseTiles: true,
                attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> | &copy <a href="http://www.openstreetmap.org/copyright">Funil PRÓ</a>',
            },
        }
    });

Моя проблема заключается в следующем, когда пользователь, вместо того, чтобы использовать системные ярлыки для навигации, используйте стрелку браузера назад, страница не будет перезагружаться, есть способ сделать перезагрузку страницы, если он использует эту форму?

Или, возможно, при доступе к конкретному маршруту перезагрузите страницу.

1 ответ

  1. «Или, возможно, при доступе к конкретному маршруту перезагрузите страницу.»

    Да, вы можете получить к нему доступ с помощью $routeChangeevent:

    $rootScope.$on("$routeChangeStart", function(event, next, current) {
        var urlFrom = current.$$route.originalPath; // Page you are coming from
        var urlTo   = next.$$route.originalPath;    // Page you are going to
    });
    

    Не забудьте ввести $rootScopeи $windowв ваш модуль.