【问题标题】:How do I get pretty URLs (remove #) while using ui-router.? [duplicate]使用 ui-router 时如何获得漂亮的 URL(删除 #)? [复制]
【发布时间】:2017-03-23 17:28:57
【问题描述】:

我已经在我的 index.html 文件的头部尝试了 $locationProvider 和 base href 标记。但是在渲染我的视图时出现 404 错误。我认为这与我在 app.js 文件中的 Express 的 app.use 方法有关。

这是我这个项目的文件夹结构。 https://i.stack.imgur.com/PFPlk.png

这是我的 app.js 文件。

var express = require('express');
var app = express();
app.use(express.static(__dirname+'/public'));
app.listen(3000);
console.log('Running on port 3000...');

这是我的 script.js 文件。

var myApp = angular.module('myApp', ['ui.router']);
myApp.config(function($stateProvider,$urlRouterProvider) {
$stateProvider
    .state('home', {
    url: '/',
    templateUrl : 'views/home.html',
    controller  : 'homeController'
})
    .state('posts', {
    url: '/posts',
    templateUrl : 'views/posts.html',
    controller  : 'postsController'
})
    .state('radio', {
    url: '/radio',
    templateUrl : 'views/radio.html',
    controller  : 'radioController'
});
$urlRouterProvider.otherwise('/');
});
myApp.controller('homeController', function($scope) { 
$scope.title = 'Hello.'; 
});
myApp.controller('radioController', function($scope) { 
$scope.message = 'Look! I am an radio page.'; 
});

这是我的 index.html 文件。

<!DOCTYPE html>
<html lang="en">
<head>
    <title>WISS</title>
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" />
    <link rel="stylesheet" href="styles/styles.css" />
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.25/angular-route.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.8/angular-ui-router.min.js"></script>
    <script src="script.js"></script>
</head>
<body ng-app="myApp">
        <nav class="navbar navbar-inverse navbar-fixed-top">
            <div class="container-fluid">
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                        <span class="sr-only">Toggle navigation</span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a class="navbar-brand" href="/">Brand</a>
                </div>
                <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                    <ul class="nav navbar-nav navbar-right">
                        <li><a ui-sref="home">HOME</a></li>
                        <li><a ui-sref="posts">POSTS</a></li>
                        <li><a ui-sref="radio">RADIO</a></li>
                    </ul>
                </div>
            </div>
        </nav>
    <div class="container">
        <div id="main">
            <div ui-view></div>
        </div>
    </div>
</body>
</html>

【问题讨论】:

    标签: angularjs express angular-ui-router


    【解决方案1】:

    myApp.config 块中的 Angular 中放置 $locationProvider.html5Mode(true);

    然后在 app.listen(3000) 之前添加 express

    app.all('/*', function(req, res) {
        res.sendfile('public/index.html');
    });
    

    【讨论】:

    • 行得通!非常感谢!
    猜你喜欢
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 2014-12-02
    • 2013-01-10
    • 1970-01-01
    • 2021-01-29
    • 1970-01-01
    相关资源
    最近更新 更多