внешнее перенаправление в AngularJS стирании стека навигации - PullRequest
0 голосов
/ 11 февраля 2020

Мы настроили разные приложения, например микро-интерфейсы, работающие в разных версиях Angular, одно из которых в AngularJS требуется для перенаправления на URL, который находится в другом проекте. Все работает до тех пор, пока вы не попытаетесь go вернуться назад с помощью кнопки «Назад» в браузерах, и вы перейдете к предыдущему домену, на который перешел пользователь. Он не может go вернуться к предыдущему URL. Кажется, навигация была заменена, но я не вижу ничего в проекте, который использует location.replace.

, например:

Я перемещаюсь

www.anyurl.com

затем я go в мои проекты днс, как

myproject.com/employer/dashboard

после того, как я могу нажать на нужную кнопку, которая приведет меня к

myproject.com/employer/job-flow#location

До там все в порядке, но если Я нажимаю кнопку возврата браузера вместо того, чтобы перевести меня к:

myproject.com/employer/dashboard

Это будет go к предыдущему домену:

www.anyurl.com

Надеюсь, это четкое объяснение

отсюда: /employer/search до /employer/job-flow#location

Процесс:

Объявление нового пункта в меню:

..., {
      title: 'Post a job',
      mainPath: 'job-flow',
      fallbackUrl: 'employer/job-flow',
      image: '/assets/images/new-job.svg',
      notification: false,
      subitems: [],
      enabled: true
    }

В HTML есть:

ng-href="{{ item.fallbackUrl }}"

Затем есть модуль angular, который хранит массив со всеми маршрутами:

var employerWebRoutes = [
  ...
  'employer/job-flow'
];

После этого массив повторяется (я думаю, что он работает как перехватчик для данных маршрутов):

employerWebRoutes.forEach( function ( route ) {
  $stateRegistryProvider.register( {
    url: '/' + route + '{path:.*}',
    name: route + 'ExternalState',
    component: 'merlExternalRoutesComponent',
    resolve: {
      reloadFromServer: reloadFromServerResolver
    },
    data: {
      authAccess: 'private',
      isExternalRoute: true
    }
  } );
} );

И, наконец, метод reloadFromServerResolver

var reloadFromServerResolver = [
  '$transition$',
  '$q',
  function (
    $transition$,
    /** angular.IQService */ $q
  ) {
    var /** @type module:angular.ui.IStateService */ stateService = $transition$.router.stateService;
    var /** @type string */ toUrl = stateService.href( $transition$.to().name, $transition$.params() );
    setTimeout( function () {
      window.location.assign( toUrl );
    }, 10 );
    return $q.reject();
  }
];

Я предполагаю, что это как д Во-первых, я новичок в этом проекте и не могу понять, как описать эту проблему, если кто-то может указать верное направление, я был бы очень признателен. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...