В AngularJS я иногда вижу $state.transitionTo()
, а иногда мы используем $state.go()
. Может ли кто-нибудь сказать мне, как они отличаются друг от друга и когда нужно использовать друг друга?
Разница между $state.transitionTo() и $state.go() в Angular ui-router
Ответ 1
Вы имеете в виду AngularUI Router? Если это так, wiki указывает различия:
$state.go(to [, toParams] [, options])
Возвращает Promise, представляющий состояние перехода.
Удобный метод перехода в новое состояние.
$state.go
вызывает$state.transitionTo
внутренне, но автоматически устанавливает параметры{ location: true, inherit: true, relative: $state.$current, notify: true }
. Это позволяет вам легко использовать абсолютный или относительный путь и указывать только параметры, которые вы хотите обновить (при этом не заданные параметры наследуются от текущего состояния).$state.transitionTo(to, toParams [, options])
Возвращает Promise, представляющий состояние перехода.
Низкоуровневый метод перехода в новое состояние.
$state.go()
используетtransitionTo
внутренне.$state.go()
рекомендуется в большинстве случаев.
Ответ 2
$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');