2017-03-15 91 views
0

我认为这是一个简单的问题,但无法在谷歌上找到。我正在使用angular 1.5和ui-router 1.5。如何检查当前的ui-view状态是否具有下一个ui-state? (这是必需的,因为我想检查时后退按钮被按下,或通过直接联系当前的UI视图是否加载)检查UI状态是否有向前UI状态

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 

我一直在使用$ionicHistory.forwardView()尝试,但它总是返回null。不知道为什么?任何帮助是极大的赞赏。

+0

你有没有什么合乎逻辑的方法来找出某些视图是特定视图的子视图(比如view2)? – tanmay

+0

[如何使用角度检测浏览器后退按钮单击事件]可能的重复(http://stackoverflow.com/questions/15813850/how-to-detect-browser-back-button-click-event-using-angular) – tanmay

回答

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 
     })); 
    }); 
}); 

注意我已经使用持久性存储技术。人们也必须处理更新情况。