ui-route多级路由刷新当前页

这个是基于上一个ui-route的博客: ui-route多级路由嵌套默认显示

因为以前这个是做demo,而今天是因为准备用到项目中去才发现的一个大问题,那就是点击二级导航下的其他导航并且显示后点击浏览器的刷新按钮,会发现当前页回到了二级目录下的默认页,也就是第一页,这个就不能忍了!!

然后今天把那个默认显示二级的改造了一下,去除了不能刷新当前页而是刷新全部页的弱智bug(也可以不算bug)。

其实关键点就在

<a ui-sref="a" ui-sref-opts="{reload:true}">一级</a>


controller: function ($state) {
    $state.go('a.a')
}

这两个地方,意思是刷新和点击的时候会执行$state.go()方法,所以才是只要刷新别的页也是会跑到默认页的。

下面这个是我自己琢磨出来的,我想刷新哪就刷新哪

<a class="one" ui-sref="a.a" >一级</a>

$urlRouterProvider.otherwise('/a'); //一级默认
    $stateProvider.state('a', {
            url: '/a',
            templateUrl: 'nav1.html',
        })
//下面的key需要通过登录进来的时候进行设置
var one = document.querySelector('.one');
var key = sessionStorage.getItem('key');
if(key != ''){
    one.click();
    sessionStorage.setItem('key','');
}

不知道你们看懂了没,就是我们登录进来的时候通过保存一个sessionStorage来判定是否是第一次进入,如果是就执行点击事件显示一级默认的页面并点击那个a标签,然后就会成功显示一级下面的二级以及二级下面的三级页,同时点击二级下面的其他页面并且刷新也不会调到默认页了!!

完整代码

只有首页 其他页面在上一篇的最下面


<body data-ng-app="myapp">

    <div class="layout">
        <ul class="layout-head">
            <li>
                <a class="one" ui-sref="a.a" >一级</a>
            </li>
            <li>
                <a ui-sref="b">二级</a>
            </li>
            <li>
                <a ui-sref="c">三级</a>
            </li>
        </ul>
        <div data-ui-view=""></div>
    </div>

    <script>
        angular.module('myapp', ['ui.router'])
            .config(function ($stateProvider, $urlRouterProvider) {
                $urlRouterProvider.otherwise('/a'); //一级默认
                $stateProvider.state('a', {
                        url: '/a',
                        templateUrl: 'nav1.html',
                    })
                    .state('b', {
                        url: '/b',
                        templateUrl: 'nav2.html'
                    })
                    .state('c', {
                        url: '/c',
                        templateUrl: 'nav3.html'
                    })
                    .state('a.a', {
                        url: '/a.a',
                        templateUrl: 'nav1_1.html'
                    })
                    .state('a.b', {
                        url: '/a.b',
                        templateUrl: 'nav1_2.html'
                    })
            });
    </script>
    <script>
    window.onload = function(){
       var one = document.querySelector('.one');
       var key = sessionStorage.getItem('key');
       if(key != ''){
         one.click();
         sessionStorage.setItem('key','');
       }
    }
    </script>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值