使用侧边菜单和选项卡时的离子历史堆栈

bau*_*arb 8 ionic

使用侧边菜单和标签时,我遇到了离子及其历史堆栈的麻烦.

我在这里创建了一个plunker示例:http://embed.plnkr.co/XK6seY9mDypTW6GcsCpj/preview

要解决问题的步骤:

  1. 打开侧边菜单
  2. 导航到"主列表"
  3. 选择其中一个项目
  4. 您将被重定向到详细信息页面的常规数据选项卡

问题是离子本身在导航中没有显示后退按钮.我创建了一个自己的后退按钮,调用$ ionicGoBack($ event)来查看离子是否具有历史堆栈.但是当单击此按钮时,您将看到离子不会导航回主列表,而是保留在详细信息页面的常规数据选项卡上.

谁能告诉我这是什么问题?我知道标签有自己的历史堆栈,但标签应该知道它的祖先,还是我错了?

非常感谢您的帮助!

最好的祝福

小智 7

这是由于菜单关闭指令把历史堆栈(如解释的事实在这里).

如果从元素中删除"menu-close",则会保留历史记录,但会丢失一些预期的行为.

作为一种解决方案,您可以开发自己的指令(比如说"menu-close-keep-history")来替换"菜单关闭"指令.

myModule.directive('menuCloseKeepHistory', ['$ionicHistory', function($ionicHistory) {
    return {
        restrict: 'AC',
        link: function($scope, $element) {
            $element.bind('click', function() {
                var sideMenuCtrl = $element.inheritedData('$ionSideMenusController');
                if (sideMenuCtrl) {
                    $ionicHistory.nextViewOptions({
                        historyRoot: false,
                        disableAnimate: true,
                        expire: 300
                    });
                    sideMenuCtrl.close();
                }
            });
        }
    };
}]);
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题.


Nir*_*ddy 5

好吧,代替自定义指令,可以使用 menu-toggle 代替 menu-close 使用

菜单切换

ionic跟踪您的导航历史


小智 0

每个 ion-tab 都有自己的历史堆栈。当您点击列表中的某个项目并转到 General-data/:id 时,您正在创建一个新的历史记录堆栈 - 请注意,每个选项卡都有自己的 ion-nav-view。

我之前遇到过这个问题,只是使用了 tabs css 样式,并将 ng-click 或 ng-href 附加到每个选项卡,然后继续处理当前的历史记录堆栈,并且可能重用选项卡栏作为模板或指令。

希望有帮助!