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
urlasociada 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.