gpt4 book ai didi

angularjs - 使用 Angular UI-Router 更改 url,什么都不做

转载 作者:行者123 更新时间:2023-12-03 08:04:35 25 4
gpt4 key购买 nike

在不运行所有其他进程的情况下,似乎没有内置的方式来更新 url,例如调用 Controller 。

选项“重新加载”,仅适用于 $location.search()
有没有实现的方法或途径

我怎样才能实现类似于:

$state.go('stateName', params, {justChangeTheUrl: true})

使用 Angular UI-Router?

最佳答案

如果您只想更改 url 而无需 ui-router 处理该更改,那么您可以使用以下完全可接受的 hack (coffeescript):

scopeOff = $scope.$on '$stateChangeStart', (e) ->
e.preventDefault()
scopeOff()

$location.path 'just/change/the/url'

备注

通常通过 $location.path() 更改浏览器 url将触发 ui-router 开始其处理。此处理从名为 $stateChangeStart 的 ui-router 特定事件开始。 .

但是,在上面的代码中,您正在通过 e.preventDefault() 捕获和,放弃对 $stateChangeStart 的初始调用事件,因此阻止 ui-router 处理 url 更改。
$stateChangeStart上的 watch 事件是“一次性使用”,即代码在一次运行后自动与事件分离(这就是对 scopeOff() 的调用所做的)。

最终效果是在不触发 ui-router 处理的情况下更改浏览器中的 url,并且仅将此限制应用于您刚刚更改的一个 url。整洁,但不如新的整洁 deferIntercept即将与我们一起提供的功能。

关于angularjs - 使用 Angular UI-Router 更改 url,什么都不做,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25126963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com