Angularjs $ location.path()找不到当前路由器

时间:2015-02-26 09:50:06

标签: javascript angularjs angular-ui-router

我使用angularjs和ui-router来编写页面。我发现我的路由器在当前路由器中不起作用。

例如:

当前路由器为/a/b$location.path()$location.path("/a/b")无效。

如果我找到一条新路径$location.path("/a/c"),它就可以了。

请给我一些关于我的问题的建议。感谢。

1 个答案:

答案 0 :(得分:1)

如果当前网址是

/a/b

UI-Router角度来看,这意味着 - 某些,例如

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

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

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

因为这意味着 - 状态发生变化。另一方面,这个电话

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

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

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

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

选项可以是:

{reload: true}

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

$state服务

go(to, params, options)
  

...

     

选项对象。选项包括:

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