Angular ui-router中$ state.transitionTo()和$ state.go()之间的区别

Bar*_*ona 103 javascript url-routing angularjs angular-ui angular-ui-router

在AngularJS中,我看到有时我们使用$state.transitionTo(),有时我们使用$state.go().任何人都可以告诉我他们的差异,以及何时应该使用另一个?

Mic*_*ley 145

你指的是AngularUI路由器吗?如果是这样,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()建议在大多数情况下使用.


Mis*_*lis 9

$state.transitionTo转向一个新的国家.在大多数情况下,您可能不喜欢使用它$state.go.

它需要一个options对象中的一些参数:

  • location:如果true将更新位置栏中的URL,如果false不更新.如果是字符串"replace",则会更新网址并替换上一条历史记录.
  • inherit:If true将从当前url继承url参数.
  • relative (stateObject,default null):当使用相对路径(例如'^')进行转换时,定义哪个状态是相对的.
  • notify:如果true,将播出$stateChangeStart$stateChangeSuccess事件.
  • reload:如果true状态或参数没有改变,将强制转换,也就是重新加载相同的状态.

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

  • location: true
  • inherit: true
  • relative: $state.$current
  • notify: true
  • reload: false

由于synthax更简单,因此更方便.您只能使用州名称来呼叫它.

$state.go('home');
Run Code Online (Sandbox Code Playgroud)