2014-04-25 7 views

risposta

38

C'è una soluzione per questo scenario. Useremmo 1) una funzione nativa ui-router e 2) un'impostazione di configurazione. A working example potrebbe essere osservato here.

1) Una caratteristica nativa di definizioni UI-router stato è:

Il url non è necessaria. Lo stato potrebbe essere definito senza la sua rappresentazione in posizione.

2) Un ambiente di configurazione è:

percorso Stringa | Funzione Il percorso url a cui si desidera reindirizzare o una regola di funzione che restituisce il percorso dell'URL. La versione funzione viene passata due params: $ iniettori e $ localizzazione

Soluzione: combinazione di questi due. Avremmo statesenzaurl e personalizzato otherwise:

$stateProvider 
    .state('404', { 
    // no url defined 
    template: '<div>error</div>', 
    }) 

$urlRouterProvider.otherwise(function($injector, $location){ 
    var state = $injector.get('$state'); 
    state.go('404'); 
    return $location.path(); 
}); 

Verificare che tutti in questo working example

+1

Questo ha funzionato come un fascino. Grazie @radim – Ray

+2

soluzione brillante! grazie @Radim – plong0

+0

questo è bello, grazie – Hoto

15

Come di ui-router#0.2.15 è possibile utilizzare $state.go() e inviare possibilità di non aggiornare la posizione:

$urlRouterProvider.otherwise(function($injector) { 

    var $state = $injector.get('$state'); 

    $state.go('404', null, { 
    location: false 
    }); 

}); 
+0

Grazie! Questo funziona perfettamente con l'intercettazione "altrimenti" e "$ stateChangeError" per gli URL dinamici. – extempl

Problemi correlati