Angular UI路由器中$ state.transitionTo()和$ state.go()之间的区别


Answers:


151

您是指AngularUI路由器吗?如果是这样,则Wiki 指定差异

$ state.go(至[,toParams] [,选项])

返回表示过渡状态的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()在大多数情况下建议使用。


1
我从您的给定链接中找到了我需要的更多信息。非常感谢布兰登:)
巴塞罗那

1
显然,如果我使用transitionTo重新触发视图,则不会刷新视图中输入的值。无论如何,我们可以强制刷新值/ js / view?PS-页面重新加载不是一个选项,因为视图是一个叠加层
Swanidhi

10

$state.transitionTo过渡到新的状态。在大多数情况下,您不必使用它,您可能更喜欢$state.go

它在options对象中带有一些参数:

  • location:如果true会更新位置栏中的网址,如果false不会,则会更新。如果为string "replace",则将更新url并替换最后的历史记录。
  • inherit:如果true将从当前网址继承网址参数。
  • relative (stateObject,默认null:使用相对路径(例如'^')转换时,定义要相对的状态。
  • notify:如果true,将广播$stateChangeStart$stateChangeSuccess事件。
  • reloadtrue即使状态或参数未更改,如果仍将强制转换,也就是重新加载相同状态。

$state.go是一种使用默认选项进行调用的快捷方式$state.transitionTo

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

由于合成胶更简单,因此更方便。您只能使用州名来调用它。

$state.go('home');
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.