我使用 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/