在 AngularJS 中,我看到有时我们使用 $state.transitionTo()
,有时我们使用 $state.go()
。谁能告诉我它们有何不同以及何时应该使用另一种?
您指的是AngularUI Router吗?如果是这样,wiki specifies the differences:
$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()。
$state.transitionTo
过渡到一个新的状态。在大多数情况下,您不必使用它,您可能更喜欢 $state.go
。
它采用 options
对象中的一些参数:
location:如果为 true 将更新地址栏中的 url,如果为 false 则不会。如果字符串“替换”,将更新 url 并替换最后的历史记录。
继承:如果为 true 将从当前 url 继承 url 参数。
relative (stateObject, default null):当使用相对路径转换时(例如'^'),定义从哪个状态是相对的。
notify:如果为 true,将广播 $stateChangeStart 和 $stateChangeSuccess 事件。
reload:如果为 true 将强制转换,即使状态或参数没有改变,也就是重新加载相同的状态。
$state.go
是一种使用默认选项调用 $state.transitionTo
的快捷方式:
地点:真
继承:真
相对:$state.$current
通知:真
重新加载:假
它更方便,因为合成器更简单。您只能使用州名来调用它。
$state.go('home');