Usando angular-ui-router, ¿cómo puedo usar el método de lo contrario en $ stateProvider o cómo puedo usarlo?
95
Usando angular-ui-router, ¿cómo puedo usar el método de lo contrario en $ stateProvider o cómo puedo usarlo?
$stateProvider.otherwise
, así que me ayudará)Respuestas:
No puedes usar solo
$stateProvider
.Necesita inyectar
$urlRouterProvider
y crear un código similar a:La
/otherwise
URL debe definirse en un estado como de costumbre:Vea este enlace donde explica ksperling
fuente
$stateProvider
. Es menos trabajo si solo desea mostrar una plantilla, pero no redirigir. Prefiero la respuesta de @ juan-hernandez.otherwise
(en este caso'/otherwise'
) tiene que coincidir con el nombre del estado (el primer parámetro a.state
) o el valor de laurl
opción?Puede
$stateProvider
usar la sintaxis catch all ("*path"
). Solo necesita agregar una configuración de estado al final de su lista como la siguiente:Todas las opciones se explican en https://github.com/angular-ui/ui-router/wiki/URL-Routing#regex-parameters .
Lo bueno de esta opción, a diferencia de
$urlRouterProvider.otherwise(...)
, es que no está obligado a cambiar de ubicación.fuente
you're not forced to a location change
?/this/does/not/exist
, la URL permanecerá de esa manera en la barra de direcciones. La otra solución le llevará a/otherwise
También puede inyectar $ state manualmente en la función de lo contrario, que luego puede navegar a un estado sin URL. Esto tiene la ventaja de que el navegador no cambia la barra de direcciones, lo cual es útil para manejar el regreso a una página anterior.
fuente
Ok, el momento tonto en el que te das cuenta de que la pregunta que hiciste ya está respondida en las primeras líneas del código de muestra. Solo eche un vistazo al código de muestra.
Echa un vistazo aquí.
fuente
Solo quiero intervenir en las excelentes respuestas que ya se proporcionan. La última versión de
@uirouter/angularjs
marcó la claseUrlRouterProvider
como obsoleta. Ahora recomiendan usar en suUrlService
lugar. Puede lograr el mismo resultado con la siguiente modificación:Métodos adicionales: https://ui-router.github.io/ng1/docs/1.0.16/interfaces/url.urlrulesapi.html
fuente
Las referencias de respuesta aceptadas
angular-route
preguntan sobreui-router
. La respuesta aceptada usa el "monolítico"$routeProvider
, que requiere elngRoute
módulo (mientras queui-router
necesita elui.router
módulo)En su lugar, se usa la respuesta con la calificación más alta
$stateProvider
, y dice algo como.state("otherwise", { url : '/otherwise'... })
, pero no puedo encontrar ninguna mención de "lo contrario" en la documentación que vincula . Sin embargo, veo que$stateProvider
se menciona en esta respuesta donde dice:Ahí es donde mi respuesta podría ayudarte. Para mí, fue suficiente usarlo
$urlRouterProvider
así:Mi sugerencia es consistente con la
ui-router
documentación , ( esta revisión específica ), donde incluye un uso similar de.when(...)
método (la primera llamada a la función):fuente