stateparams - Diferencia entre ui-sref y $ state.go en AngularJS UI-Router
ui router params (2)
No hay diferencia funcional entre ui-sref
y $state.go
. Ver el doc
Activando un estado
Hay tres formas principales de activar un estado:
- Llame a
$state.go()
. Método de conveniencia de alto nivel.- Haga clic en un enlace que contiene la directiva
ui-sref
.- Navegue a la
url
asociada con el estado.
Entonces, estos están haciendo lo mismo al final, y como podemos ver en el código de la directiva ui-sref
:
...
element.bind("click", function(e) {
var button = e.which || e.button;
if ( !(button > 1 || e.ctrlKey || e.metaKey || e.shiftKey || element.attr(''target'')) ) {
var transition = $timeout(function() {
// HERE we call $state.go inside of ui-sref
$state.go(ref.state, params, options);
});
llama $state.go()
Y también como se discute aquí: ui-sref :
ui-sref=''stateName''
- Navega al estado, sin parámetros. ''stateName'' puede ser cualquier estado absoluto o relativo válido, siguiendo las mismas reglas de sintaxis que$state.go()
¿Hay alguna diferencia funcional entre ui-sref
y $state.go()
?
ui-sref
se usa en <a>...</a>
y $state.go(''someState'')
se usa en un controlador.
En HTML, yo usaría:
<a ui-sref="currentState.state1">Link</a>
Mientras que en una función yo usaría algo como:
if(someCondition) {
$state.go(''currentState.state1'');
}
Entonces, ¿es eso o debo agregar algo después de $state.go()
? Suponiendo que el estado actual es currentState
.
Sí, hay una diferencia. Como puedes ver en la pregunta:
Marco iónico $ state.go (''app.home''); ¿Está agregando el botón de nuevo en la página a la que quiero ir (cómo eliminarlo)?
El $ state.go por defecto agrega un botón de retroceso. La solución para que se comporte exactamente de la misma manera es llamar a:
$ionicHistory.nextViewOptions({disableBack: true});
antes de llamar a $ state.go.