$ state.go更改url / #q = hello to /#/ q = hello

时间:2016-10-23 17:15:03

标签: javascript angularjs angular-ui-router


我正在开发一个chrome扩展程序,它会在google.com.au中注入一些内容脚本。该内容脚本然后加载具有小接口的基于角度ui路由器的app。我正在使用没有网址的$ state。所以只有templateUrl和控制器。问题是,当我使用$state.go('home')转到我的小应用的主页时,$state.go会在内部更改位置或网址,例如, (1) :- https://www.google.com.au/#q=hello
(2) :- https://www.google.com.au/#/q=hello (有一个额外的/在q之后)

第二个网址无效,将我重定向回google.com.au 此外,值得一提的是 - 当我将其注入链接的搜索结果页面时,相同的应用程序工作正常,其中网址中没有任何#

此外,我尝试了$state.go$state.transitionTo之类的变体,第三个参数为{location:false ....}。但它仍然改变了上面的网址。

我被困住了,无法继续推进逻辑 这是问题的截屏视频 http://screencast.com/t/ZrBtlkU3z
任何帮助将受到高度赞赏 提前谢谢。

更新
这是一个包含上述问题的chrome扩展示例。 https://Vikasg7@bitbucket.org/Vikasg7/example-app.git
请将其作为未打包的分机加载并尝试转到
https://www.google.com.au/#q=hello
在加载扩展程序之前和之后,看看我上面提到的问题。

希望这可以帮助您解决问题的专家。

2 个答案:

答案 0 :(得分:0)

我认为这是ui-router的预期行为。您可能需要使用本机javascript(window.location.href =' XXX')或者$ location来完全按照您的意愿设置hashbang。

答案 1 :(得分:0)

好的,经过大量的研究和打击和试验。 这是在更改状态时不会更改URL的代码。 我不得不使用html5Mode。更多详细信息和用法可在此处找到 https://docs.angularjs.org/guide/ $#位置的HTML链接重写
stackoverflow post AngularJS 1.1.5 - automatically adding hash tag to URLs

angular
  .module("app", ["ui.router", "app.services", "app.directives", "app.controllers"])
  .config(["$stateProvider", "$locationProvider", function ($stateProvider, $locationProvider) {
    $locationProvider.html5Mode({
      enabled: true,
      requireBase: false,
      rewriteLinks: true
    }).hashPrefix("!")
  }])

希望这有帮助,有人在那里!