#javascript #angularjs #node.js #express #angular-ui-router
#javascript #angularjs #node.js #экспресс #angular-ui-router
Вопрос:
Я могу перезагрузить маршруты первого уровня с этими настройками, но не маршруты второго уровня. Например, «Игровой» маршрут, определенный ниже, не может быть перезагружен, но маршрут входа в систему может.
Я добавил <base href="/">
в index.html .
Angular router.js (используя angular-ui-router):
$stateProvider
.state('root', {
url: '/',
templateUrl: templateUrlRoot 'root.html',
controller: 'gameListController',
title: 'ManRPG'
})
.state('game', {
url: '/game/:gameId',
templateUrl: templateUrlRoot 'game.html',
controller: 'gameController',
title: 'Game'
})
.state('login', {
url: '/login',
templateUrl: templateUrlRoot 'login.html',
controller: 'loginCtrl',
title: 'Login'
})
Экспресс:
var express = require('express');
var app = express();
var router = express.Router();
var bodyParser = require('body-parser');
// ... other routes, etcetera
app.use('/api', router);
// Send the angular app, make sure that index.html is served first
app.use('/', express.static(__dirname '/app' ));
app.get('/*', function (req, res) {
res.sendFile(__dirname '/app/index.html');
})
Любая помощь / совет приветствуется.
Ответ №1:
Такое поведение произошло из-за того, что некоторые из моих файлов были включены без начального «/». Итак, что я сделал, это изменил:
<script src="js/lib/angular/angular.js"></script>
<script src="js/lib/angular-ui-router/release/angular-ui-router.js"></script>
Для:
<script src="/js/lib/angular/angular.js"></script>
<script src="/js/lib/angular-ui-router/release/angular-ui-router.js"></script>
И это решило мою проблему.