切换标签时,离子后退按钮显示不正确

时间:2014-09-02 11:41:50

标签: javascript angularjs cordova-3 ionic-framework

我有一个主标签,只显示项目列表。和设置选项卡,其中包含用于设置不同配置的嵌套视图。

如果我按此特定顺序导航,后退按钮显示不正确,或者如果要显示,则标题不会离开:37px

这就是我创建导航栏的方式。

<ion-nav-bar class="bar-stable no-animation" align-title="left">
  <ion-nav-back-button class="button-icon icon ion-ios7-arrow-back"></ion-nav-back-button>
</ion-nav-bar>

enter image description here

是否有解决方案,要么清除该选项卡的历史记录,那么点击它时会打开主设置选项卡而不是之前打开的嵌套视图?或者如果需要显示,则应正确计算标题的左侧。

这是一个codepen演示。按此顺序单击选项卡。

1. On main page, click on Scientific Facts
2. After view changes, click on Contacts tab
3. Then click on Home tab again. It reproduces the behavior.

更新

到目前为止,我发现有$scope.$watch决定是否显示或隐藏后退按钮。这会被触发很晚(在计算和标题对齐之后)。因此,在计算时,leftWidth不会返回按钮的宽度。

2 个答案:

答案 0 :(得分:4)

当像这样使用标签时,每个标签都包含自己的历史记录。它实际上正确显示了后退按钮,因为主页面选项卡状态已更改为子页面。然后,后退按钮将带您返回此选项卡的主页(后退按钮特定于每个选项卡!)。第一次单击/点击选项卡按钮可以完成切换选项卡的工作,第二次单击/点击将实际将用户带到该选项卡的默认页面。该错误有时候仍然会应用后退按钮宽度。

我相信Ionic团队正在为此进行一些改进和修复。

您可以在主页的控制器中使用$ionicNavBarDelegate.showBackButton(false);来禁用该视图中的后退按钮。您还可以将nav-clear指令置于锚标记上,以明确隐藏链接视图中的后退按钮。

控制器示例

angular.module('App').controller('HomeCtrl', function ($scope, $ionicNavBarDelegate) {
  // Disable back button on this controller
  $ionicNavBarDelegate.showBackButton(false);
});

答案 1 :(得分:0)

如果您只使用Angular Routes,请使用以下

$ route.reload()

如果您在离子上使用UI-Router,也可以使用以下

$ state.go($ state.current,{},{reload:true});