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

В чем разница между $state.go(app.location) и $location.path( "приложение/местоположение" )?

Недавно я начал использовать ионную структуру, в ней есть angular js. Чтобы перемещаться между экранами, я использовал $location.path, и он отлично работает. Однако в примере, который я загрузил, я видел, что $state.go используется для перенаправления на какую-либо страницу. Я хотел бы узнать разницу между ними.

4b9b3361

Ответ 1

Служба $location размещена в структуре angular.js и позволяет вам управлять объектом местоположения (аналогично тому, как это делается в чистом javascript). Государственная служба $входит в модуль ui-router и позволяет управлять маршрутами в расширенном режиме во всех режимах управления конечными автоматами.

Если вы используете ui-router, вам следует использовать функцию $state для управления состояниями/маршрутами, потому что государство абстрагирует понятие маршрута, и вы можете изменять физические маршруты без изменения состояний.

Кроме того, при работе в режиме hashbang будет больше проблем, особенно в ваших html-ссылках. В этом случае предпочтительнее использовать ui-sref вместо ng-href (или просто href). На мой взгляд, вы всегда должны думать в терминах состояний, а не путей. Очевидно, что вы можете смешивать сервисы, если знаете, что делаете.

Ответ 2

Спасибо @wilver за ответ. Когда я углубился в angular и изучил различные способы структурирования моих проектов, я понял, что эти состояния и пути лучше. И да, я нашел состояния намного лучше, чем пути.

$state.go, который поставляется с $stateProvider - поставщиком ui-router, будет работать на основе имен состояний. Основное различие между ранее встроенным (теперь вам нужно включить ngRoute) маршрутизатором и состояниями заключается в том, что "государства могут иметь вложенные состояния, но с маршрутизатором это невозможно". И я вдруг понял, что весь Ионная структура возможна из-за этой концепции - я смог понять это, работая над веб-приложением angular на основе ngRoute и ионного приложения на основе ui-router.

Ионный работает с приложением как основным состоянием, а все остальные экраны определяются как его под-состояния. Вот почему вы видите app.screen1, app.screen2 внутри $stateProvider в app.js.

Итак, когда у вас есть маршруты, вы используете $location.path("<routeUrl>") и когда у вас есть состояния, вы используете $state.go("<stateName>")

Ответ 3

Я использую ионное и одно из различий, которое я наблюдал, но еще не понял, почему $location.path намного медленнее, чем $state.go