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');