Разница между $ state.transitionTo () и $ state.go () в Angular ui-router


108

Я вижу, что в AngularJS иногда мы используем, $state.transitionTo()а иногда используем $state.go(). Может ли кто-нибудь сказать мне, чем они отличаются и когда один должен использоваться вместо другого?

Ответы:


151

Вы имеете в виду маршрутизатор AngularUI ? Если да, то в вики указаны различия :

$ state.go (to [, toParams] [, параметры])

Возвращает Promise, представляющий состояние перехода.

Удобный способ перехода в новое состояние. $state.goвызывает $state.transitionToвнутренне, но автоматически устанавливает параметры на { location: true, inherit: true, relative: $state.$current, notify: true }. Это позволяет вам легко использовать абсолютный или относительный путь и указывать только те параметры, которые вы хотите обновить (при этом позволяя неопределенным параметрам наследовать от текущего состояния).


$ state.transitionTo (to, toParams [, параметры])

Возвращает Promise, представляющий состояние перехода.

Низкоуровневый метод перехода в новое состояние. $state.go()использует transitionToвнутренне. $state.go()рекомендуется в большинстве ситуаций.


1
Я нашел дополнительную информацию, которая мне нужна, по вашим ссылкам. Большое спасибо Брэндону :)
Барселона

1
По-видимому, значения, введенные в представление, не сбрасываются, если я повторно запускаю представление с помощью transitionTo. В любом случае мы можем принудительно обновить значения / js / view? PS - Перезагрузка страницы невозможна, так как вид является наложенным
Swanidhi

10

$state.transitionToпереходите в новое состояние. В большинстве случаев вам не обязательно использовать его, вы можете предпочесть$state.go .

Он принимает некоторые параметры в optionsобъекте:

  • location: Если trueобновит URL-адрес в адресной строке, если falseнет. Если строка "replace", обновит URL-адрес, а также заменит последнюю запись в истории.
  • inherit: Если trueунаследует параметры URL от текущего URL.
  • relative (stateObject, по умолчанию null) : при переходе по относительному пути (например, '^') определяет, от какого состояния относиться.
  • notify: Если true, будет транслироваться $stateChangeStartи$stateChangeSuccess события.
  • reload: Если trueвызовет переход, даже если состояние или параметры не изменились, то есть перезагрузка того же состояния.

$state.goэто своего рода ярлык, который вызывает $state.transitionToпараметры по умолчанию:

  • location: true
  • inherit: true
  • relative: $state.$current
  • notify: true
  • reload: false

Это удобнее, так как синтаксис проще. Назвать его можно только названием штата.

$state.go('home');
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.