我有一个超出我标签的视图,现在当我尝试从该视图重定向到一个标签时,我被重定向到错误的标签。我做了一个codepen来向你展示我的意思,因为我真的不知道如何解释它,看看我在控制台中创建的日志
.controller('MyCtrl', function($scope, $state, $rootScope, $ionicPlatform) {
$rootScope.$on('$stateChangeStart',function(event, toState, toParams, fromState, fromParams){
// do something
$scope.from = fromState;
console.log(fromState);
})
$scope.goBack = function(){
console.log($scope.from.name);
$state.go($scope.from.name);
}
})
答案 0 :(得分:1)
您应该应用其他答案,但还有其他问题。
另一个问题是,当你点击后退按钮时,状态正在变为tab.volgend(这是正确的)但是在此之后将转换为tab.alert状态......所以我试图计算为什么第二次重定向发生了呢。
单击后退按钮时从console.log中解压缩:
我的第一位候选人是:
$urlRouterProvider.otherwise('/tab/alerts');
你不应该在标准路由中使用ui-route,所以你应该在控制器中注释这一行添加下一行:
console.log('going to default state');
$state.go('tab.alerts');
第二次转换是由离子框架完成的,我已经设置了断点并检查了callstack,检查了这个捕获:
单击后退时的第一次呼叫:
2-离子框架检测到网址的变化,并触发第二次转换:
我将阅读更多此框架,看看我是否理解为什么会发生这种情况......我会及时通知您。
答案 1 :(得分:0)
您应该将状态名称传递给$ state.go(),而不是状态对象。
所以$ state.go($ scope.from.name)应该为你解决这个问题。
答案 2 :(得分:0)
为什么不简单地使用
$state.go('stateName', {//for stateParams}, { reload: true });
答案 3 :(得分:0)
这也发生在我身上。尝试使用transitionTo方法,而不是去
$state.transitionTo($scope.from.name);
这在我的案例中得到了解决。
可以找到更多详细信息here
编辑:我分叉了你的原始codepen,它也在那里工作.. Forked Codepen here