javascript - Angularjs $location.path() 无法定位到当前路由器

标签 javascript angularjs angular-ui-router

我使用 angularjs 和 ui-router写一页。我发现我的路由器在当前路由器中无法工作。

例如:

当前路由器为/a/b,且$location.path()$location.path("/a/b") 不起作用。

如果我找到一个新路径,$location.path("/a/c"),它正在工作。

请就我的问题给我一些建议。谢谢。

最佳答案

如果当前网址是

/a/b

UI-Router的 Angular 来看,这意味着 - 一些状态,例如

.state("stateA", { 
  url: "/a/:id" 
  ...
}

而UI-Router,不会触发状态改变,当我们调用:

$location.path("/a/b")

因为这意味着 - NO 状态改变。另一方面,这个调用

$location.path("/a/c") // check the 'c' at the end

正在更改状态的 :id 参数,并将导致状态重新加载。

我想说,强制状态更改的首选方法是使用服务 $state 及其方法 .go()

$state.go("stateA", params, options)

其中选项可能是:

{reload: true}

这甚至会强制重新加载当前状态。检查文档

$state服务

go(to, params, options)

...

Options object. The options are:

  • location - {boolean=true|string=} - 如果 true 将更新地址栏中的 url,如果 false 则不会。如果是字符串,则必须是“replace”,这将更新 url 并替换最后的历史记录。
  • 继承 - {boolean=true},如果为 true 将从当前 url 继承 url 参数。
  • relative - {object=$state.$current},当使用相对路径(例如“^”)转换时,定义相对于哪个状态。
  • notify - {boolean=true},如果 true 将广播 $stateChangeStart 和 $stateChangeSuccess 事件。
  • reload (v0.2.5) - {boolean=false},如果为 true,即使状态或参数未更改,也将强制转换,即相同状态的重新加载。它与 reloadOnSearch 不同,因为当您想要在一切都相同(包括搜索参数)时强制重新加载时,您可以使用它。

关于javascript - Angularjs $location.path() 无法定位到当前路由器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28739108/

相关文章:

javascript - element.find 不适用于 ng-switch 中的嵌套元素

javascript - 使用 angularjs 样式的新窗口

javascript - 主干JS : Load more items into a collection

javascript - Ionic v1 关闭所有打开的模式

javascript - TypeError : $(. ..).valid 不是函数

angularjs - 如何让 Controller 等待服务返回值以及如何访问 Controller 中的返回值?

javascript - 如何将 AngularJS 1.6 升级到 Angular 5

angularjs - 用于将服务注入(inject)子状态解析的 UI 路由器未知提供程序

javascript - 如何修复 JavaScript 中的 "this.property is not iterable at window.onload"

javascript - 如何在没有 jquery 的情况下仅使用 EventListener 切换子菜单?