我正在尝试使用$state.go
在Ionic(+ AngularJS UI路由器)应用程序中的标签之间切换,但我无法使其与子子状态(状态)一起使用。 substate.subsubstate )。它实际上在移动到子状态( state.substate )时工作正常。
这就是我的意思:http://codepen.io/anon/pen/Jykmi?editors=101
按“Tab2”按钮既不起作用也不抛出错误。尽管如此,将ng-click="goToState('tabs.tab2.home1')"
(第25行)替换为ui-sref="tabs.tab2.home1"
或href="#/tabs/tab2/home1"
,效果非常好。这是一个例子:http://codepen.io/anon/pen/DIxhC?editors=101
即使使用ng-click="goToState('tabs.tab2')"
也行,但这不是预期的目标状态。
我发现了其他类似的问题(例如this和this),但我认为他们没有遇到同样的问题。
有人知道$state.go
是否适用于第三级嵌套状态?我的代码中存在问题吗?。
提前多多谢谢
问候,
拉法。
答案 0 :(得分:1)
由于ui-sref="tabs.tab2.home1"
在内部使用$state.go
,正如您所说ui-sref="tabs.tab2.home1"
有效。
我的回答是肯定的:$state.go()
应该适用于第三级嵌套状态。
我实际上在我自己的项目中使用它没有任何问题(但没有离子标签)
答案 1 :(得分:1)
对不起,我没有足够的声誉来添加评论。
我遇到了与你完全相同的问题:href或ui-sref工作正常,而使用$ state.go进行ng-click无效(浏览器中的地址已正确更改但视图仍未被重定向)。我只是同时使用它们解决了这个问题:
在html中:
ui-sref="tabs.tabs2.home" + ng-click="goHome()"
或
href="#/tabs/tabs2/home" + ng-click="goHome()"
在控制器js中:
$scope.goHome = function(){
$state.go('tabs.tabs2.home');
// or, location.path works fine too:
// $location.path('/tabs/tabs2/home');
}
我不知道原因,所以这只是一种解决方法