javascript - 使用 ui-router 时如何去掉/#/?

标签 javascript angularjs routes angular-ui-router

我是 Angular 新手,目前正在使用 ui.router 进行路由,并且对某些事情感到好奇。我注意到,当我在本地主机或在线访问我的网站时,我的 URL 末尾包含/#/。首页看起来像domain.com/#/,其他页面遵循套件(domain.com/#/about)如何让它在没有哈希的情况下显示?

这是我的 app.js 的示例

var app = angular.module('dashboardApp', ['ui.router']);

app.config(
    ['$stateProvider','$urlRouterProvider', 
    function($stateProvider, $urlRouterProvider){
    $urlRouterProvider.otherwise('/');

    $stateProvider
        //Dashboard states and nested views ========================
        .state('home', {
            url: '/',
            templateUrl: './templates/main/dashboard.html',
            controller: 'dashboardCtrl'
        })

        //Subject states and nested views ==========================
        .state('about', {
            url: '/about',
            templateUrl: './templates/main/about.html',
            controller: 'aboutCtrl'
        });
    }]);

这是我在 DOM 中调用它的方式

<div class="main-nav">
    <a ui-sref="home"><img src="randomimage.png" /></a>
</div>
<div class="main-nav">
    <a ui-sref="about">About</a>
</div>

最佳答案

hasbang 的存在是出于与旧版浏览器的兼容性原因。 这是同一个问题的主题:

AngularJS routing without the hash '#'

这是一篇博客文章,解释了如何通过旧版浏览器的回退来安全地摆脱 hashbang:

http://scotch.io/quick-tips/js/angular/pretty-urls-in-angularjs-removing-the-hashtag

本质上,您可以使用 $locationProvider.html5Mode(true) 消除“HTML5 就绪”浏览器的 hashbang,Angular 将自动回退到旧浏览器的 hashbang 版本。

关于javascript - 使用 ui-router 时如何去掉/#/?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25596941/

相关文章:

javascript - HTML5 模式与哈希模式 AngularJS 的优点/缺点

javascript - 无法使用 Angular 工厂服务获取json数据

javascript - 如何访问 ng-repeat 中的 Controller 变量?

jquery - 从 Rails 3 升级后不允许使用 Rails 4 方法

android - 通过自定义路线进行 Mapbox 导航

javascript - 样式 native JavaScript 通知

javascript - 在ajax中调用beforeSend成功

javascript - 从 angularjs 调用 RESTful 服务的正确方法

javascript - 按钮点击计数器

ios - 具有 MVVM 架构的 Swiftui 在复杂应用程序中导航屏幕