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,default null :当使用相对path(例如'^')进行转换时,定义相对于哪个状态。
  • notify :如果为true ,将会广播$stateChangeStart$stateChangeSuccess事件。
  • reload :如果true将强制转换,即使状态或参数没有改变,也就是重新加载相同的状态。

$state.go是一种调用$state.transitionTo快捷方式 ,默认选项为:

  • locationtrue
  • inherittrue
  • relative$state.$current
  • notifytrue
  • reloadfalse

合成器更简单,更方便。 你只能用状态名称来调用它。

 $state.go('home');