2014-10-03 12 views
10

Sto usando AngularJS e ui-router e nel mio app.js. Ho la seguente riga:L'ui-router AngularJS deve altrimenti indicare invece di url?

$urlRouterProvider.otherwise('/'); 

Tuttavia non voglio che per inviare l'utente a un URL ma invecead uno stato:

.state('404', 
     { 
      views: { 
       'body': { 
        templateUrl: 'partials/404.html', 
       } 
      } 
     }); 

Normalmente vorrei solo fare questo:

$state.go('404'); 

Come posso fare questo per il metodo altrimenti?

Nota: il mio stato 404 non ha un URL, quindi in pratica mantiene l'URL che l'utente ha inserito o visitato e cambia semplicemente il modello.

risposta

24

Penso avete raggiunto che con questo codice

$urlRouterProvider.otherwise(function($injector, $location){ 
    $injector.invoke(['$state', function($state) { 
    $state.go('404'); 
    }]); 
}); 
+0

Sì, sembra un modo interessante per gestire questo :) – Cameron

3

Try This.

$urlRouterProvider.otherwise(function($injector, $location){ 
    $injector.get('$state').go('404'); 
}); 
1

Solo un piccolo miglioramento a @ di kdlcruz risposta:

$urlRouterProvider.otherwise(function($injector){ 
    $injector.invoke(['$state', function($state) { 
     $state.go('404', {}, { location: false }); 
    }]); 
}); 

Così facendo, è ancora in grado di mantenere la corretta l'URL e unico stato è cambiato.

Problemi correlati