这是我的路由器文件: 它嵌套在require.js块中并配置为使用Jade模板
define([
'./app',
'angular.uirouter'
], function(app, angularUIRouter) {
"use strict";
// ROUTES
app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function($stateProvider, $urlRouterProvider, $locationProvider) {
// loads url from the index
$urlRouterProvider.otherwise('/');
$locationProvider.html5Mode(true);
$stateProvider
.state('dashboard', {
url:'/dashboard',
views: {
'core' : {
templateUrl: '/articles/dashboard'
}
}
})
}]);
});
这是我的Express.js路由器文件:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res) {
res.render('main', {
title: 'Express'
});
});
router.get('/dashboard', function(req, res) {
console.log("/dashboard requested");
});
router.get('/articles/:name', function (req, res) {
var name = req.params.name;
res.render('articles/' + name);
});
module.exports = router;
当我转到localhost:3000 / dashboard时,它向服务器发出GET请求。如何配置Angular UI Router来处理GET请求而不是服务器?
注意:我仍然可以访问localhost:3000 / articles / dashboard并查看信息中心。另外,
a(ui-sref="dashboard")
正确加载仪表板。
答案 0 :(得分:3)
angular和ui路由器都无法处理服务器GET。 Angular $ locationProvider html5Mode仅解决客户端设置 - url不包含#和位置控件也是URL中的路径部分。
Html5模式需要服务器端配置。每个请求都必须返回应用程序入口点 - 通常是index.html。
例如
router.get('/dashboard', function(req, res) {
res.sendfile('path-to/index.html');
});