使用ui-router时如何摆脱/#/?

gja*_*den 2 javascript routes angularjs angular-ui-router

我是Angular的新手,我目前正在用ui.router做我的路线并对某些事情感到好奇.我注意到当我在localhost或在线访问我的网站时,我的网址包含/#/.主页看起来像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'
        });
    }]);
Run Code Online (Sandbox Code Playgroud)

以下是我在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>
Run Code Online (Sandbox Code Playgroud)

小智 5

由于旧版浏览器的兼容性原因,hasbang存在.以下是同一问题的主题:

没有散​​列'#'的AngularJS路由

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

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

从本质上讲,您可以使用$locationProvider.html5Mode(true)消除"HTML5 ready"浏览器的hashbang,Angular将自动回退到旧浏览器的hashbang版本.