Интересно, какая разница с этими тремя, с их соответствующими $locationChangeSuccess
, $routeChangeSuccess
и $stateChangeSuccess
.
Разница между $locationChangeStart, $routeChangeStart и $stateChangeStart
Ответ 1
$locationChangeStart:
это использует поставщик $location
и передает его при каждом изменении URL-адреса. Местоположение больше относится к пути определенного URL-адреса. Это больше похоже на обычный JavaScript, вы можете изменить любой путь в своем приложении, и не имеет значения, определено ли в вашем приложении как маршрут или состояние.
$routeChangeStart:
это использует поставщик $route
, и он тот же, он broadcasts
, когда маршрут изменяется (по умолчанию Angular маршрутизатор используется с ngRoute
). Это используется для связи между контроллерами и представлениями.
$stateChangeStart:
это происходит, когда ваше состояние изменяется, и это транслируется, когда начинается переход. Он используется ui-router, который обеспечивает другую (более продвинутую) реализацию маршрутизатора. Штаты позволяют вам отображать и получать доступ к различной информации о разных состояниях, и вы можете легко передавать информацию между состояниями через $stateParams
.
Они очень похожи, на самом деле они имеют одни и те же имена, но основные различия зависят от маршрутизации вашего приложения. Если вы используете маршрутизатор Angular, тогда придерживайтесь маршрутов, однако, если вы используете ui-router, придерживайтесь состояний. Это практические советы, которые я могу вам дать.
Ответ 2
Обратите внимание, что вы можете изменить местоположение без изменения состояния (т.е. URL-адрес изменен, но вы все еще в одном состоянии).
Таким образом, вы можете прослушать $locationChangeStart
, даже если вы используете ui-router, если изменение $stateParam
может привести к потере ваших изменений, например.