使用Ionic Framework登录/注销时清除历史记录和重新加载页面

fri*_*ley 79 angularjs angular-ui-router ionic-framework

我是Ionic的移动应用程序开发新手.在登录和注销时,我需要重新加载页面,以便刷新数据,然而,$state.go('mainPage')在不重新加载的情况下将用户带回视图 - 从不调用其后面的控制器.

有没有办法在Ionic中清除历史并重新加载状态?

Jim*_*Dev 123

欢迎来到框架!实际上,Ionic中的路由由ui-router提供支持.您应该查看之前的SO问题,找到几种不同的方法来实现这一目标.

如果您只想重新加载状态,可以使用:

$state.go($state.current, {}, {reload: true});
Run Code Online (Sandbox Code Playgroud)

如果你真的想重新加载页面(就像你想要重新引导所有东西一样)那么你可以使用:

$window.location.reload(true)
Run Code Online (Sandbox Code Playgroud)

祝好运!

  • $ state.go($ state.current,{},{reload:true}); 这个解决方案对我不起作用. (13认同)
  • `$ state.go($ state.current,{},{reload:true});`如果`cache:true`(在省略缓存时是默认值),`不起作用.在#ionic 1.0.0-RC2和1.0.0中测试.看我的回答. (9认同)

ABC*_*.ca 25

我发现JimTheDev的答案只有在州定义确定后才有效cache:false.在缓存视图的情况下,您可以执行$ionicHistory.clearCache(),然后$state.go('app.fooDestinationView')如果您从一个状态导航到缓存但需要刷新的状态.

请参阅我的答案,因为它需要对Ionic进行简单的更改,我创建了一个拉取请求:https://stackoverflow.com/a/30224972/756177


Epo*_*okK 18

正确答案:

$window.location.reload(true);
Run Code Online (Sandbox Code Playgroud)


Raj*_*war 18

我找到了一个帮助我完成它的解决方案.设置cache-view="false"ion-view标签解决我的问题.

<ion-view cache-view="false" view-title="My Title!">
  ....
</ion-view>
Run Code Online (Sandbox Code Playgroud)


eza*_*ain 11

重新加载页面不是最好的方法.

您可以处理状态更改事件以重新加载数据,而无需重新加载视图本身.

在这里阅读ionicView生命周期:

http://blog.ionic.io/navigating-the-changes/

并处理事件beforeEnter for data reload.

$scope.$on('$ionicView.beforeEnter', function(){
  // Any thing you can think of
});
Run Code Online (Sandbox Code Playgroud)


小智 6

在我的情况下,我需要清除视图并重新启动控制器.我可以通过这个片段获得我的意图:

$ionicHistory.clearCache([$state.current.name]).then(function() {
  $state.reload();
}
Run Code Online (Sandbox Code Playgroud)

缓存仍然有效,似乎只清除了视图.

ionic --version 说1.7.5.