在不运行所有其他进程的情况下,似乎没有内置的方式来更新 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/