Ich verwende Angular 1.3.10, UI-Router 0.2.10 und Express 4.14.0 für einen grundlegenden Reddit-Klon, und ich habe Probleme mit dem Routing.Angular: Neuladen/URL-Navigation wird auf Standardroute zurückgesetzt
My (abgekürzt) Express Routen:
router.get('/api/home', function (req, res, next) {
res.render('index', {
title: 'Meanit'
});
});
router.get('*', function (req, res, next) {
res.redirect('/api/home');
});
Mein Angular Zustandskonfiguration:
app.config([
'$stateProvider',
'$urlRouterProvider',
'$locationProvider',
function ($stateProvider, $urlRouterProvider, $locationProvider) {
$stateProvider
.state('home', {
url: '/home',
templateUrl: '/views/home.html',
controller: 'MainCtrl',
resolve: {
postPromise: [
'posts',
function (posts) {
return posts.getAllPosts();
}
]
}
})
.state('posts', {
url: '/posts/{id}',
templateUrl: '/views/posts.html',
controller: 'PostsCtrl',
resolve: {
post: [
'$stateParams',
'posts',
function ($stateParams, posts) {
return posts.getPost($stateParams.id);
}
]
}
})
.state('register', {
url: '/register',
templateUrl: '/views/register.html',
controller: 'AuthCtrl',
onEnter: [
'$state',
'auth',
function ($state, auth) {
if (auth.isLoggedIn())
$state.go('home')
}
]
})
.state('login', {
url: '/login',
templateUrl: '/views/login.html',
controller: 'AuthCtrl',
onEnter: [
'$state',
'auth',
function ($state, auth) {
if (auth.isLoggedIn())
$state.go('home')
}
]
});
$locationProvider.html5Mode(true);
$urlRouterProvider.otherwise('home');
}
]);
Meine Ordnerhierarchie sieht wie folgt aus: Alle
meanit
public
js
app.js (Angular)
routes
index.js (Express routes)
views (Angular templates)
index.html
home.html
posts.html
register.html
login.html
server.js
die Routen wie vorgesehen , aber wenn ich die Seite während einer der Routen neu lade oder direkt zur URL der Route navigiere (/ posts/579d17934b0f5f6b2ff5c72c), ich werde zuerst nach/api/home über Express (beabsichtigt, denke ich) und dann nach/home durch Angular statt der/posts/579d17934b0f5f6b2ff5c72c Route (nicht beabsichtigt) umgeleitet.
Wie erzwinge ich URL-Navigation/Neuladen, um auf der Unterroute zu bleiben?
(Ich habe bei AngularJS. Retain state after page reload sehe, aber ich verstehe nicht, wie die URL Parsing einrichten/wie Sie den Code aus der akzeptierten Antwort anzupassen mein Projekt zu passen.)
Wie gehen Sie Ihre statische Ressourcen (Javascript, CSS, HTML, Bilder usw.)? Dienen sie Express oder benutzen Sie einen anderen Webserver wie nginx? – kennasoft
Nicht zu vertraut mit Express, aber es scheint mir, dass Sie nicht möchten, dass Express die URL umleiten. Wenn express Sie an/api/home sendet, erkennt angular das nicht, weil es sich nicht um einen Status handelt. Sie landen also unter/home –
@kennasoft: Ich stehe für die Statik mit Express (öffentliche und Ansichtsordner)). –