2014-05-20 14 views
7

Ecco il mio problema: per qualche ragione, il link validi, angolare non riesce a trovare quello che sto cercando e restituire il 404. Ecco la configurazione percorso:angolare percorso reindirizza a 404

$routeProvider.when('/', {templateUrl: 'partials/home.html'}); 
    $routeProvider.when('/home', {templateUrl: 'partials/home.html'}); 
    $routeProvider.when('/menus', {templateUrl: 'partials/menus.html'}); 
    $routeProvider.when('/menu/:menuId', {templateUrl: 'partials/menu.html', controller: 'ShowMenuCtrl'}); 
    $routeProvider.when('/products', {templateUrl: 'partials/products.html'}); 
    $routeProvider.when('/product/:productId', {templateUrl: 'partials/product.html', controller: 'ShowProductCtrl'}); 
    $routeProvider.when('/drink/:productId', {templateUrl: 'partials/product.html', controller: 'ShowProductCtrl'}); 
    $routeProvider.when('/drinks', {templateUrl: 'partials/drinks.html'}); 
    $routeProvider.when('/order', {templateUrl: 'partials/order.html'}); 
    $routeProvider.when('/404', {templateUrl: 'partials/404.html'}); 
    $routeProvider.otherwise({redirectTo: '/404'}); 

Per esempio : un collegamento (come <a href="#/menu/{[{menu.id}]}" translate >SEE</a>) che punta a/menu/45122245, funzionerà quando sono acceso/menu/vista, ma non su/home/(e restituisco il 404).

stesso URL, stesso oggetto con lo stesso ID, quindi non so cosa sta succedendo. Non so se qualche altro codice potrebbe aiutarti, fammi sapere di cosa hai bisogno :)

+1

Prova ad aggiungere URL assoluti alla tua domanda. C'è una grande differenza se si è in '/ #/menu' o si è in'/menu' quando si attiva un collegamento. –

+0

Sì, grazie, ci proverò. – enguerranws

+0

Stessa cosa, restituisce il 404. Questo è davvero strano .../product/4578754 (ad esempio) dovrebbe almeno mostrare il modello corretto, giusto? – enguerranws

risposta

1

Angular richiede di specificare la base url nella testa del file html principale() a meno che html5Mode.requireBase sia impostato su false nell'oggetto di definizione html5Mode passato a $ locationProvider.html5Mode(). Con questo, gli url relativi verranno sempre risolti in questo URL di base, anche se l'url iniziale del documento era diverso.

2

potrebbe essere io sono troppo tardi per rispondere a questo post, ma comunque credo che la seguente soluzione dovrebbe fare il trucco,

angular.module('moduleName') 
..config(['$compileProvider', '$routeProvider', function ($compileProvider, $routeProvider) { 
$routeProvider.when('/', {templateUrl: 'partials/home.html'}); 
    $routeProvider.when('/home', {templateUrl: 'partials/home.html'}); 
    $routeProvider.when('/menus', {templateUrl: 'partials/menus.html'}); 
    $routeProvider.when('/menu/:menuId', {templateUrl: 'partials/menu.html', controller: 'ShowMenuCtrl'}); 
    $routeProvider.when('/products', {templateUrl: 'partials/products.html'}); 
    $routeProvider.when('/product/:productId', {templateUrl: 'partials/product.html', controller: 'ShowProductCtrl'}); 
    $routeProvider.when('/drink/:productId', {templateUrl: 'partials/product.html', controller: 'ShowProductCtrl'}); 
    $routeProvider.when('/drinks', {templateUrl: 'partials/drinks.html'}); 
    $routeProvider.when('/order', {templateUrl: 'partials/order.html'}); 
    $routeProvider.when('/404', {templateUrl: 'partials/404.html'}); 
    $routeProvider.otherwise({redirectTo: '/404'}); 
}]) 

.run(['$location', function ($location) { 
    if ($location.path() === '' && $location.$$absUrl.indexOf('/partials') > -1) { 
     $location.path('/home') 
    } 
}]); 
Problemi correlati