Existe-t-il une différence fonctionnelle entre ui-sref
Et $state.go()
?
ui-sref
Est utilisé dans <a>...</a>
Et $state.go('someState')
est utilisé dans un contrôleur.
En HTML, j'utiliserais:
<a ui-sref="currentState.state1">Link</a>
alors que dans une fonction j'utiliserais quelque chose comme:
if(someCondition) {
$state.go('currentState.state1');
}
Alors, est-ce le cas ou dois-je ajouter quelque chose après $state.go()
? En supposant que l'état actuel est currentState
.
Il n'y a aucune fonctionnelle différence entre ui-sref
Et $state.go
. Voir la doc
Il y a trois manières d'activer un état:
- Appelez
$state.go()
. Méthode de commodité de haut niveau.- Cliquez sur un lien contenant la directive
ui-sref
.- Accédez au
url
associé à l'état.
Donc, à la fin, ils font la même chose, et comme on peut le voir dans le code de la directive 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);
});
il appelle $state.go()
Et aussi comme discuté ici: i-sref :
ui-sref='stateName'
- Accédez à l'état, pas de paramètre. 'stateName' peut être n'importe quel état absolu ou relatif valide, respectant les mêmes règles de syntaxe que$state.go()
Oui, il y a une différence. Comme vous pouvez le voir dans la question:
le $ state.go ajoute par défaut un bouton de retour. La solution pour que cela se comporte exactement de la même manière est d'appeler:
$ionicHistory.nextViewOptions({disableBack: true});
avant d'appeler $ state.go.