2016-06-06 11 views
5

Voglio accedere all'host locale: 3000/admin che è nelle mie viste .. index.html e admin.html sono i miei due file di base diversi uno è per gli utenti e altro è per admin cruscotto rispettivamenteCome utilizzare più pagine indice in angolare

nei miei app.routes.js ho questo

angular.module('appRoutes', ['ngRoute']) 
.config(function($routeProvider, $locationProvider) { 

$routeProvider 

    .when('/', { 
     templateUrl: 'app/views/pages/home.html', 
     controller: 'MainController', 
     controllerAs: 'main' 
    }) 
    .when('/admin', { 
     templateUrl: 'app/views/admin.html', 
    }) 
    .when('/logout', { 
     templateUrl: 'app/views/pages/home.html' 
    }) 
    .when('/login', { 
     templateUrl: 'app/views/pages/login.html' 
    }) 
    .when('/signup', { 
     templateUrl: 'app/views/pages/signup.html' 
    }) 
    .when('/admin/login' ,{ 
     templateUrl: 'app/views/pages/adminlogin.html' 
    }) 

    $locationProvider.html5Mode(true); 
    }) 

in server.js ho questo

app.get('*', function(req, res){ 
res.sendFile(__dirname + '/public/app/views/index.html'); 
}); 

ci sono due file di indice html: indice. h tml, admin.html voglio aprire admin.html quando l'URL è: localhost: 3000/admin

e index.html quando l'URL è: localhost: 3000

screenshot of the app structure

in vista/pagine Ho tutte le pagine html richieste da index.html e admin.html usando ng-view

+0

si prega di indicare quello che stai chiedendo, come attualmente non è chiaro qual è il problema. –

+0

Suggerimento possibile per te: http://stackoverflow.com/questions/24927784/angularjs-ui-router-multiple-pages –

+0

http://stackoverflow.com/questions/16906231/multiple-index-html-pages-angular –

risposta

4

Come ho capito la tua domanda, vorrai semplicemente aggiungere un'altra regola di routing da esprimere. Express usa la prima rotta che corrisponde, quindi l'ordine è importante qui.

app.get('/admin/*', function(req, res){ 
    res.sendFile(__dirname + '/public/app/views/admin.html'); 
}); 

app.get('*', function(req, res){ 
    res.sendFile(__dirname + '/public/app/views/index.html'); 
}); 

Lo stato docs angolari su html5mode che si dovrebbe riscrivere tutti gli URL ad un unico punto di ingresso app: Using this mode requires URL rewriting on server side, basically you have to rewrite all your links to entry point of your application (e.g. index.html). https://docs.angularjs.org/guide/$location#server-side

Quindi, per essere chiari: Quello che suggerisco è che si crea server-percorsi per due app separate. Niente ti impedisce di utilizzare la prima app ancora una volta su un'altra rotta, ma vorrei sconsigliarlo. Separa qualsiasi cosa con reale potere sul tuo back-end dall'app pubblica. Cioè rimuovi /admin/login e /admin dai tuoi percorsi-gg e crea semplicemente un'app separata per quello.

+0

grazie .. ora è il rendering admin.html di localhost: 3000/admin e ora quello che mi stai suggerendo è che devo creare 2 ng-app uno per index.html e l'altro per admin.html ?? –

+0

Ecco come lo farei. L'iniezione delle dipendenze in angolare rende così facile riutilizzare le cose, quindi è fondamentalmente solo un altro 'angular.module (...' – ippi

+0

Grazie man .. :) –

0

ho trovato una soluzione migliore per questo ..

app.get('*', function(req, res){ 
if (req.url.match('^\/admin')) { 
    res.sendFile(__dirname + '/public/app/views/admin.html'); 
} else { 
    res.sendFile(__dirname + '/public/app/views/index.html'); 
} 
}); 
Problemi correlati