AngularJS UI-Router中ui-sref和$ state.go之间的区别

时间:2014-07-02 08:52:44

标签: angularjs angular-ui-router

ui-sref$state.go()之间是否存在功能差异?

ui-sref用于<a>...</a>$state.go('someState')用于控制器。

在HTML中,我会使用:

<a ui-sref="currentState.state1">Link</a>

而在函数中我会使用类似的东西:

if(someCondition) {
    $state.go('currentState.state1');
}

那么,是我还是需要在$state.go()之后添加一些内容?假设当前状态为currentState

2 个答案:

答案 0 :(得分:50)

ui-sref$state.go之间没有 功能 差异。参见文档

Activating a state

  

激活州有三种主要方式:

     
      
  • 致电$state.go()。高级便利方法。
  •   
  • 单击包含ui-sref指令的链接。
  •   
  • 导航至与州相关联的url
  •   

所以,这些都是在最后做同样的事情,正如我们在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);
      });

它会调用 $state.go()

以及此处讨论的内容:ui-sref

  

ui-sref='stateName' - 导航到州,没有参数。 &#39; Statename的&#39;可以是任何有效的绝对或相对状态,遵循与$state.go()

相同的语法规则

答案 1 :(得分:8)

是的,有区别。正如您在问题中所看到的那样:

Ionic framework $state.go('app.home'); is adding back button on page where i want to go (how to remove it)?

$ state.go默认添加后退按钮。使其行为完全相同的解决方案是调用:

$ionicHistory.nextViewOptions({disableBack: true});

在致电$ state.go之前。