sref - AngularJS UI-Router: obtenga la URL absoluta del estado con los parámetros
ui-router angularjs (3)
Quería poder cambiar la dirección URL de la dirección sin cambiar el estado, para evitar la devolución. En mi búsqueda, ui-router
actualmente no proporciona esto, pero $location.path
de anuglar lo hace.
Así que, naturalmente, quería usar $state.get(stateName)
para llegar a la URL del estado, de modo que no escriba la URL manualmente.
Tengo dos problemas:
-
$state.get(stateName)
devuelve solo la ruta relativa. ¿Cómo puedo obtener el camino absoluto? - También devuelve la definición del estado, con los parámetros no definidos. ¿Cómo puedo obtener la URL con el parámetro en su lugar?
Por ejemplo, si tengo un estado llamado user.home.view
con user.home
, tengo mis estados definidos como
''user'': {
abstract: true,
url: ''^/users/''
},
''user.home'': {
url: ''''
},
''user.home.view'': {
url: '':id/''
}
Así que ahora mismo, $state.get(user.home.view).url
devuelve :id/
. ¿Cómo puedo obtener la URL completa (es decir, /users/5/
)?
Debe utilizar $state.href()
.
Para obtener la URL absoluta puedes usar:
$state.href(''user.home.view'', {}, {absolute: true});
Para obtener la URL con los parámetros establecidos, debe agregarlos como segundo argumento
Para obtener la URL absoluta sin parámetros, encuentro que necesito pasar inherit: false
, por ejemplo:
$state.href(''home'', {}, {absolute: true, inherit: false})
Sin inherit: false
recibí todos los parámetros que puedan estar presentes.
Qué pasa :
$state.href($state.current.name, $state.params, {absolute: true})