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'
Questo è quello che ho fatto ora, spero che ci sia un buon modo per implementarlo, come disabilitare la temporalità di navi. – Mavlarn