Ionic Soft Backbutton,$ rootScope.IonicGoBack

时间:2016-10-31 00:16:46

标签: javascript jquery angularjs ionic-framework

我正在创建一个项目,仍然使用ionic1。

我有三页主页(播放列表)< - >第二(发现)< - >第三(神话)

每个页面都有一个由顶级菜单页面的离子默认模板创建的软后退按钮。

当我进入第三页,然后按回两次(回到家)时,它停在第二页。

神话代码:

$rootScope.$ionicGoBack = function (backCount) {
    console.log("check");
    $ionicViewSwitcher.nextDirection('back');
    $state.go('app.discover');
};

发现代码:

    var doCustomBack = function () {
        console.log("hey");
        $state.go('app.playlists');
    };

    // override soft back
    // framework calls $rootScope.$ionicGoBack when soft back button is pressed
    var oldSoftBack = $rootScope.$ionicGoBack;
    $rootScope.$ionicGoBack = function () {
        doCustomBack();
    };

我尝试了多种方法,我需要覆盖后退按钮并将其更改为$ state.go,这曾经是$ ionicHistory.goBack(-2)等等。如果有一个错误,并改变它

奇怪的是:当我进入第二页然后回去时,它可以正常打印&#34;嘿嘿&#34;并返回主页。当我转到第三页然后返回到第二页它不起作用, HOWEVER 当我再次返回第三页并返回第二页时,第二页上的后退按钮起作用。< / p>

也没有错误...

如果有人对此有一定了解,那就太棒了。

提前致谢。

1 个答案:

答案 0 :(得分:1)

除了我在评论中写的内容,请尝试使用此代码。它是app.js中的运行函数

.run(function($ionicPlatform, $state, $ionicHistory, $rootScope) {

    $state.backbutton = 0;

    $ionicPlatform.registerBackButtonAction(function(event) {

    if ($state.current.name == "app.home") { // whatever your first state is
        if ($state.backbutton === 0) {
            $state.backbutton = $state.backbutton + 1;               
        } else {
            navigator.app.exitApp();
        }
    } else {
        history.go(-1);
        $ionicHistory.nextViewOptions({
            disableBack: true
        });
     }
   }, 100);

});