Подтвердить что ты не робот

Разница между $locationChangeStart, $routeChangeStart и $stateChangeStart

Интересно, какая разница с этими тремя, с их соответствующими $locationChangeSuccess, $routeChangeSuccess и $stateChangeSuccess.

4b9b3361

Ответ 1

$locationChangeStart: это использует поставщик $location и передает его при каждом изменении URL-адреса. Местоположение больше относится к пути определенного URL-адреса. Это больше похоже на обычный JavaScript, вы можете изменить любой путь в своем приложении, и не имеет значения, определено ли в вашем приложении как маршрут или состояние.

$routeChangeStart: это использует поставщик $route, и он тот же, он broadcasts, когда маршрут изменяется (по умолчанию Angular маршрутизатор используется с ngRoute). Это используется для связи между контроллерами и представлениями.

$stateChangeStart: это происходит, когда ваше состояние изменяется, и это транслируется, когда начинается переход. Он используется ui-router, который обеспечивает другую (более продвинутую) реализацию маршрутизатора. Штаты позволяют вам отображать и получать доступ к различной информации о разных состояниях, и вы можете легко передавать информацию между состояниями через $stateParams.

Они очень похожи, на самом деле они имеют одни и те же имена, но основные различия зависят от маршрутизации вашего приложения. Если вы используете маршрутизатор Angular, тогда придерживайтесь маршрутов, однако, если вы используете ui-router, придерживайтесь состояний. Это практические советы, которые я могу вам дать.

Ответ 2

Обратите внимание, что вы можете изменить местоположение без изменения состояния (т.е. URL-адрес изменен, но вы все еще в одном состоянии).

Таким образом, вы можете прослушать $locationChangeStart, даже если вы используете ui-router, если изменение $stateParam может привести к потере ваших изменений, например.