2014-06-15 7 views

risposta

2

Nello spirito di StackOverflow cercherò di rispondere alla domanda e non menziona che ciò che si sta chiedendo è un hack veramente orribile ;-)

Penso che potrebbe essere necessario qualcosa di simile. (Il codice è CoffeeScript)

angular 
.module 'app', ['ui.router'] 
.run ($rootScope, $state) -> 
    $rootScope.$on '$locationChangeStart', (event) => 
     if $state.is 'bad-state' 
      event.preventDefault() 
      $state.go 'good-state' 

Quando cambia posizione (si potrebbe anche usare $stateChangeStart) di controllare lo stato attuale e se è lo Stato non si vuole poi si va allo stato si vuole. il event.preventDefault() interrompe efficacemente l'elaborazione dello stato originariamente richiesto.

Se avete bisogno di una versione ancora più sporco, allora si potrebbe verificare gli URL posizione invece degli stati e utilizzare $location.url per eseguire il trasferimento, in questo modo:

angular 
.module 'app', ['ui.router'] 
.run ($rootScope, $location) -> 
    $rootScope.$on '$locationChangeStart', (event, nextLocation) => 
     if nextLocation is '/bad/location' 
      event.preventDefault() 
      $location.path '/good/location' 
+0

Questo è quello che ho fatto ora, spero che ci sia un buon modo per implementarlo, come disabilitare la temporalità di navi. – Mavlarn

6

Credo che questo in cui il parametro opzione di ui-router con il valore { location:'replace'} è inteso per.

La documentazione spiega:

posizione booleano o "sostituire" (default vero), se è vero aggiornerà la url nella barra degli indirizzi, se è falso non lo faranno. Se stringa "sostituisci", sarà l'URL di aggiornamento e sostituirà anche l'ultimo record cronologico.

Sembra che sia stato risolto un problema (si veda here on GitHub).

+0

Hmz Vedo l'indirizzo in arrivo in molti altri posti: https: //github.com/driftyco/ionic/issues/1287 http://stackoverflow.com/questions/21628169/handle-state-as-new-route -in-ionic-framework-with-angular-ui-router – EeKay

+0

Questo sembra essere un modo. Proverò più tardi. – Mavlarn

+0

a proposito, sebbene ci siano opzioni '{lication: 'replace'}', ma questo non funziona. Come menzionato nella risposta, c'è un problema a riguardo, e non ancora risolto. Almeno non risolto in 1.3.18 quando ho provato. – Mavlarn

Problemi correlati