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
。
答案 0 :(得分:50)
ui-sref
和$state.go
之间没有 功能 差异。参见文档
激活州有三种主要方式:
- 致电
$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)
是的,有区别。正如您在问题中所看到的那样:
$ state.go默认添加后退按钮。使其行为完全相同的解决方案是调用:
$ionicHistory.nextViewOptions({disableBack: true});
在致电$ state.go之前。