Difference between ui-sref and $state.go in AngularJS UI-Router

There is no functional difference between ui-sref and $state.go. See the doc

Activating a state

There are three main ways to activate a state:

  • Call $state.go(). High-level convenience method.
  • Click a link containing the ui-sref directive.
  • Navigate to the url associated with the state.

So, these are at the end doing the same, and as we can see in the code of the ui-sref directive:

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);

it does call $state.go()

And also as discussed here: ui-sref:

ui-sref="stateName" – Navigate to state, no params. ‘stateName’ can be any valid absolute or relative state, following the same syntax rules as $state.go()

Leave a Comment