【问题标题】:How can I use the routes, but not change the URL?如何使用路由,但不更改 URL?
【发布时间】:2013-05-05 19:39:53
【问题描述】:

我正在构建一个单页应用程序 (SPA),其域为 http://teachme.com。路线可以被视为

teachApp.config(['$routeProvider', '$locationProvider', function($routeProvider,       $locationProvider) {
    $routeProvider.
        when('/teach/', {templateUrl: 'views/login_view.html'}).
        when('/teach/overview', {templateUrl: 'views/overview_view.html'}).
        when('/teach/users', {templateUrl: 'views/users_view.html'}).
        otherwise({redirectTo: '/teach/'});
    $locationProvider.html5Mode(true);
}]);

现在每次我单击选项卡时,路线都会发生变化,我会看到不同的视图,但 URL 会更改为

http://teachme.com/#teach
http://teachme.com/#teach/overview
http://teachme.com/#teach/users

这在保持 url 唯一性和书签目的方面失败了。有没有办法让路由正常工作,但 URL 保持在 http://teachme.com

谢谢

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    路由的全部意义在于使用deep linking,每个the docs

    您的 URL 的域和路径组件将始终保持不变,但是 # 之后的组件会发生变化,即使您正在创建单页应用程序,它也允许书签工作。

    短版为否,如果您不希望更改 # 之后的 URL 部分,则路由将不起作用。在我看来,如果没有此类添加,您似乎失去了书签的价值。

    即使在单页应用程序上,您也可以为 teachoverview 部分等添加书签。也许您提供了一个 bookmark 链接,该链接始终标记域本身在用户的书签中。

    【讨论】:

    • 平心而论,我浏览了this page 上的一些应用程序。 URL 永远不会改变,即使在 # 之后也是如此。一些链接指向 /#some-section 但 URL 仍然没有改变。他们可能只是在阻止那里的默认锚行为。我不知道,我个人觉得 Angular 方法更先进,因为后退按钮仍然有效,您可以直接链接到应用程序的某些特定页面/状态。
    • 感谢您的所有努力,我通读了这些页面并意识到 Angular 方法更好
    猜你喜欢
    • 2021-01-13
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 2018-08-02
    • 1970-01-01
    • 2020-04-07
    相关资源
    最近更新 更多