gpt4 book ai didi

angularjs - 如何让 Angular 路由器(或 ui-router)接受像 `#foo` 这样的路由而不是重定向到 `#/foo` ?

转载 作者:行者123 更新时间:2023-12-01 05:14:58 24 4
gpt4 key购买 nike

术语

  • #foo : 无斜线方案
  • #/foo : slashy 计划

  • 背景

    应用程序的某些遗留部分使用(并依赖)无斜杠方案。我想以一种非破坏性的方式引入 Angular 路由(可能使用 ui-router),这样就不会干扰旧路由,这样应用程序的一部分就可以随着时间的推移优雅地逐步淘汰。一旦发生这种情况,全 Angular 应用程序可以立即切换到斜线方案。

    迄今为止

    我试过设置 $locationProvider.hashPrefix('')为空字符串,但似乎您只能将字符串设置在 # 之间和 / ,所以没有用。

    选项

    看来我也可以
  • 重写应用程序的遗留部分,或
  • 重写 Angular 的 $locationProvider.hashPrefix 以包含 '/'默认情况下。因此将其设置为 ''会变得有意义。

  • 这两个选项似乎都非常耗时。

    您知道让 Angular 识别无斜线方案的更好方法吗?

    最佳答案

    您可以尝试使用重定向!

    ui-router :

    app.config(function ($urlRouterProvider) {
    // when there is an 'old' route, redirect to new one
    $urlRouterProvider.when('foo', '/foo');

    // You can also use regex for the match parameter
    $urlRouterProvider.when(/(\w+)/i, '/$1'); // UNTESTED!!!!!!
    })

    引用关于 ui-router wiki

    我很抱歉,但是在 plunkers/fiddles 中很难测试主题标签,所以我现在不提供一个......

    关于angularjs - 如何让 Angular 路由器(或 ui-router)接受像 `#foo` 这样的路由而不是重定向到 `#/foo` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21448949/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com