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

Ani*_*nha 47 angularjs angular-ui-router

有没有之间的功能差异ui-sref$state.go()

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

在HTML中,我会使用:

<a ui-sref="currentState.state1">Link</a>
Run Code Online (Sandbox Code Playgroud)

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

if(someCondition) {
    $state.go('currentState.state1');
}
Run Code Online (Sandbox Code Playgroud)

那么,它或者我需要在之后添加一些东西$state.go()吗?假设当前状态是currentState.

Rad*_*ler 51

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

激活一个州

激活状态有三种主要方式:

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

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

它打电话 $state.go()

并且如下所述:ui-sref:

ui-sref='stateName' - 导航到州,没有参数.'stateName'可以是任何有效的绝对或相对状态,遵循相同的语法规则$state.go()

  • 据我所知,有一点不同:导航到`url`将调用`$ urlRouterProvider`匹配器,而其他两种方法则不会. (2认同)

Ger*_*rbó 8

是,有一点不同.正如您在问题中看到的那样:

离子框架$ state.go('app.home'); 是在我要去的页面上添加后退按钮(如何删除它)?

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

$ionicHistory.nextViewOptions({disableBack: true});
Run Code Online (Sandbox Code Playgroud)

在调用$ state.go之前.