Angular UI路由器中的$ state.transitionTo()和$ state.go()之间的区别
在AngularJS中,有时我们使用$state.transitionTo()
,有时我们使用$state.go()
。 谁能告诉我他们有什么不同,什么时候应该使用另一个?
你是指AngularUI路由器 ? 如果是这样,维基指定了区别 :
$ state.go(to [,toParams] [,options])
返回表示转换状态的Promise 。
转换到新状态的便捷方法。
$state.go
内部调用$state.transitionTo
但自动将选项设置为{ location: true, inherit: true, relative: $state.$current, notify: true }
。 这允许您轻松使用绝对path或相对path,只指定要更新的参数(同时让未指定的参数从当前状态inheritance)。
$ state.transitionTo(to,toParams [,options])
返回表示转换状态的Promise 。
转换到新状态的低级方法。
$state.go()
内部使用transitionTo
。$state.go()
在大多数情况下被推荐。
$state.transitionTo
转换为新的状态。 在大多数情况下, 你不必使用它,你可能更喜欢$state.go
。
它在options
对象中需要一些参数:
-
location
:如果为true
则更新位置栏中的url,如果为false
则不会。 如果string"replace"
,将更新url,也取代最后的历史logging。 -
inherit
:如果true
将从当前urlinheritanceurl参数。 -
relative
(stateObject,defaultnull
) :当使用相对path(例如'^')进行转换时,定义相对于哪个状态。 -
notify
:如果为true
,将会广播$stateChangeStart
和$stateChangeSuccess
事件。 -
reload
:如果true
将强制转换,即使状态或参数没有改变,也就是重新加载相同的状态。
$state.go
是一种调用$state.transitionTo
的快捷方式 ,默认选项为:
-
location
:true
-
inherit
:true
-
relative
:$state.$current
-
notify
:true
-
reload
:false
合成器更简单,更方便。 你只能用状态名称来调用它。
$state.go('home');