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

标签 angularjs angular-ui-router

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

相关文章:

angularjs - localhost 不工作 - vs 代码中的 chrome 扩展

javascript - Angular ui-router 和具有嵌套状态的后退按钮

angularjs - ionic - $state.go 存在参数问题

javascript - 使用 Angular UI 路由器 $stateProvider 在状态上声明主 Controller

css - 具有多个导航栏的 Angular

javascript - 使用 ng-repeat 制作列表,以 "custom categories"分隔(AngularJS)

javascript - 是否可以使用 AngularJS $formatters 添加额外的零? (或者以任何可能的方式,输入数字?)

javascript - Angular 范围问题

Angularjs 从没有数据可返回的函数返回虚拟 promise ?

angularjs - 使用 Ui-Router 的 ui-sref 来设置查询参数