检查ui-state是否具有前向ui-state

时间:2017-03-15 17:19:28

标签: angularjs ionic-framework angular-ui-router

我认为这是一个简单的问题,但在谷歌上找不到。我使用的是角1.5和ui-router 1.5。如何检查当前的ui-view状态是否具有下一个ui-state? (这是必需的,因为我想检查当按下后退按钮或直接链接时是否加载了当前的ui-view)

client.close()

我尝试过使用Case 1 -------- view1 -> view2 -> view3 // now I have pressed back button view1 -> view2 ? // Here view2 actually had next state that was view3 Case 2 -------- view1 -> view4 -> view2 //Here view2 do not have next ui-state ,但它总是返回null。不知道为什么?任何帮助是极大的赞赏。

1 个答案:

答案 0 :(得分:0)

谷歌搜索了4个小时后,我想出了一些自定义解决方案。想分享。必须进行适当的错误处理。

// just listen to statechange success event 
app.run(['$rootScope', function($rootScope){
   $rootScope.$on('$stateChangeSuccess', 
      function(event, toState, toParams, fromState) {
        // if fromState.name is empty, its refresh || first landing
        var history = $window.localStorage.getItem('history');
        var back = false;
        if (history !== null) {
            history = JSON.parse(history);
            if (toState.name === history.from && fromState.name === history.to) {
                back = true;
            }
        }
        $window.localStorage.setItem('history', JSON.stringify({
            to: toState.name,
            from: fromState.name,
            isBack: back
       }));
   });
});

注意我使用了持久存储技术。一个人也必须处理刷新条件。