angualr-ui tabs 刷新后返回初始值

发布于 2022-09-01 22:46:32 字数 86 浏览 12 评论 0

RT,使用angular-ui里的tabs做选项卡切换的时候,不会记录当前选项卡选定状态,当有人手贱按刷新的时候,就会返回初始值。如何记录当前选项卡选定状态?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

傲影 2022-09-08 22:46:32

我也碰到过同样的问题,最近在做公司营销活动【发起】页面时,发起分为4个步骤,我将每一步作为一个命名视图,比如:<div ng-if="step == 3" ui-view="step-3"></div>, 通过ng-if来确定显示第几步, 然后在控制器中有一个方法来设置step,方法如下:

$scope.$on('changeStep', function(e, data) {
   $scope.step = data;
});

但是,当编辑到其中某一步时,如果刷新浏览器就会回到第1步状态。一开始我是用localStorage来存储step状态

$scope.step = $localStorage.step ? $localStorage.step : '1';
$scope.$on('changeStep', function(e, data) {
   $scope.step = data;
   $localStorage.step = data;
});
// 不在发起页面时清除数据
$scope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
  if (toState.name != 'app.xx.new' || toState.name != 'app.xx.edit' || toState.name != 'app.xx.view') {
    delete $localStorage.step;
  }
})

这样就可以保存状态了,但是有一个问题是,如果当前编辑到第3步,我又重新开一个窗口从列表页面进入编辑,会直进入第三步,跳过了前二步。
后来我也试过$cacheFactory, 一刷新状态就丢失了,所以最后的解决办法是使用sessionStorage。可以看看社区array_huang的文章localstorage 必知必会来了解二者的使用场景。

这种方式不一定最优,但可以作为替代方案一试。

友谊不毕业 2022-09-08 22:46:32

参考angular cache factory

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文