ui-router (0.3.2) не запускает `$ stateChangeStart` для параметра состояния регулярного выражения в истории - PullRequest
0 голосов
/ 06 мая 2018

Пожалуйста, смотрите этот стек . Обратите внимание, что я использую Angularjs@1.5.7 и ui-router@0.3.2.

Он определяет следующие состояния ui-маршрутизатора:

  $stateProvider
  .state('counter1', {
    url: '/counter1/{id:(NEW-ID-\d+|)}?detail',
    templateUrl: 'view/counter.html',
    controller: ['$scope', '$state', '$interval', counterController]
  })
  .state('counter2', {
    url: '/counter2/:id?detail',
    templateUrl: 'view/counter.html',
    controller: ['$scope', '$state', '$interval', counterController]
  })

Оба состояния идентичны, за исключением того, что counter1 определяет параметр id как регулярное выражение, тогда как counter2 определяет его простым способом.

Проблема в том, что при этой настройке counterController '

$scope.$on('$stateChangeStart', () => console.log('$stateChangeStart'))

будет срабатывать только для маршрута counter2, а не для counter1, когда пользователь использует браузер back или forward . Странно то, что он срабатывает, например, state.go() или нажав на ссылку ui-sref.

Если регулярное выражение в маршруте counter1 изменяется на {id:.*}, оно работает как положено, но для моего варианта использования мне нужно определить его как {id:NEW-ID-\d+|}. Является ли это известной ошибкой, и есть ли другой обходной путь, чтобы убедиться, что $stateChangeStart действительно запущен правильно? Я ничего не нашел и был бы благодарен за идеи.

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