ChatGPT解决这个技术问题 Extra ChatGPT

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

在 AngularJS 中,我看到有时我们使用 $state.transitionTo(),有时我们使用 $state.go()。谁能告诉我它们有何不同以及何时应该使用另一种?


C
Community

您指的是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()。


我从您给定的链接中找到了我需要的更多信息。非常感谢布兰登:)
显然,如果我使用 transitionTo 重新触发视图,视图中输入的值不会被清除。无论如何我们可以强制刷新值/js/view? PS - 页面重新加载不是一个选项,因为视图是一个覆盖
M
Mistalis

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