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
$urlRouterProvidery crear un código similar a:La
/otherwiseURL 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 laurlopción?Puede
$stateProviderusar 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/otherwiseTambié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/angularjsmarcó la claseUrlRouterProvidercomo obsoleta. Ahora recomiendan usar en suUrlServicelugar. 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-routepreguntan sobreui-router. La respuesta aceptada usa el "monolítico"$routeProvider, que requiere elngRoutemódulo (mientras queui-routernecesita elui.routermó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$stateProviderse menciona en esta respuesta donde dice:Ahí es donde mi respuesta podría ayudarte. Para mí, fue suficiente usarlo
$urlRouterProviderasí:Mi sugerencia es consistente con la
ui-routerdocumentación , ( esta revisión específica ), donde incluye un uso similar de.when(...)método (la primera llamada a la función):fuente