2016-06-06 22 views
5

Chcę uzyskać dostęp do localhost: 3000/admin, który jest w moich poglądach .. the index.html i admin.html są moje dwa różne pliki bazowe jeden dla użytkowników i druga jest dla administratora desce rozdzielczej odpowiednioJak korzystać z wielu stron indeksu w kanciastych

w moich app.routes.js mam ten

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); 
    }) 

w server.js mam ten

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

istnieją dwa pliki indeksu html: indeks. h tml, admin.html chcę otworzyć admin.html gdy adres URL jest: localhost: 3000/admin

i index.html gdy adres URL jest: localhost: 3000

screenshot of the app structure

w widokach/pages Mam wszystkie strony html wymagane przez index.html i admin.html przy użyciu ng-view

+0

Proszę podać co pytasz o, jak obecnie nie jest jasne, co jest problemem. –

+0

Możliwe wskazówki dla Ciebie: http://stackoverflow.com/questions/24927784/angularjs-ui-router-multiple-pages –

+0

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

Odpowiedz

4

Jak rozumiem Twoje pytanie, chcesz dodać jeszcze jedną regułę routingu do wyrażenia. Express używa pierwszej dopasowanej trasy, więc kolejność jest tutaj ważna.

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'); 
}); 

kątowego docs stan o html5mode że należy przepisać wszystkie adresy URL do pojedynczego punktu wejścia aplikacji: 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

Więc jasno: Co proponuję jest utworzenie serwera trasy dla dwie oddzielne aplikacje. Nic nie stoi na przeszkodzie, aby użyć pierwszej aplikacji jeszcze raz na innej trasie, ale radziłbym jej. Oddziel wszystko, co ma prawdziwą moc nad twoim zapleczem z aplikacji publicznej. To znaczy. usuń /admin/login i /admin ze swoich ng-tras i po prostu utwórz dla nich oddzielną aplikację.

+0

dzięki .. teraz to renderowanie admin.html przez localhost: 3000/admin i teraz sugerujesz mi, że muszę utworzyć 2 ng-app, czyli jedną dla index.html, a drugą dla admin.html ?? –

+0

Tak to zrobię. Wstrzykiwanie zależności kątowe ułatwia ponowne użycie rzeczy, więc jest to po prostu kolejny "angular.module" (... – ippi

+0

Dzięki człowieku .. :) –

0

znalazłem lepsze rozwiązanie tego ..

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'); 
} 
}); 
Powiązane problemy