zoukankan      html  css  js  c++  java
  • Vue route的使用

    1、route.js文件

    import Vue from 'vue'
    import Router from 'vue-router'
    
    Vue.use(Router)
    
    const router = new Router({
        routes: [
            {
                path: '/',
                name: 'login',
                component: () => import('./views/login.vue')
            },
            {
                path: '/schools',
                name: 'schools',
                component: () => import('./views/schools/main.vue')
            },
            {
                path: '/main/:id',
                name: 'main',
                component: () => import('./views/report/main.vue'),
                redirect: '/main/:id/class',
                children: [
                    {
                        path: '/main/:id/teacher',
                        name: 'teacherMain',
                        component: () => import('./views/teacher/main.vue'),
                    },
                    {
                        path: '/main/:id/teacher/:gradeId/:subjectId',
                        name: 'teacherMain',
                        component: () => import('./views/teacher/main.vue'),
                    },
                    {
                        path: '/main/:id/class',
                        name: 'classMain',
                        component: () => import('./views/class/main.vue'),
                    },
                ]
            },
            {
                path: '**',          // 错误路由
                redirect: '/login'   //重定向
            }
        ]
    })
    
    // 全局路由守卫
    router.beforeEach((to, from, next) => {
        function getCookie(name) {
            let arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
            if (arr = document.cookie.match(reg))
                return decodeURIComponent(arr[2]);
            else
                return null;
        }
    
        // to: Route: 即将要进入的目标 路由对象
        // from: Route: 当前导航正要离开的路由
        // next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。
    
        let isLogin = getCookie("localtoken") !== null;  // 是否登录
    
        // 未登录状态;当路由到nextRoute指定页时,跳转至login
        if (!isLogin && to.name !== 'login') {
            router.push({ name: 'login' });
        }
    
        // 已登录状态;当路由到login时,跳转至home
        if (to.name === 'login') {
            if (isLogin) {
                router.push('/schools');
            }
        }
    
        next();
    });
    
    export default router;

    2、路由跳转

    2.1 页面跳转

            <router-link tag="nav" active-class="active" :to="'/main/'+schoolID+'/teacher'">
                <a>教师</a>
                <i></i>
            </router-link>
            <router-link tag="nav" active-class="active" :to="'/main/'+schoolID+'/class'">
                <a>班</a>
                <i></i>
            </router-link>

    2.2 js方法跳转

    this.$router.push('/main/' + this.schoolID + '/teacher');
    
    this.$router.push('/main/' + this.schoolID + '/teacher/' + this.nowGrade + "/" + this.nowSubject);

    3、使用路由参数

        watch: {
            //如果路由发生了变化,更新页面数据
            $route(to, from) {
                if (to.path !== from.path) {
                    this.schoolID = this.$route.params.id;
                    this.gradeId = this.$route.params.gradeId;
                    this.subjectId = this.$route.params.subjectId;
                    this.init();
                }
            }
        },
        data(){
            return {
                schoolID: this.$route.params.id,//学校 id
                gradeId: this.$route.params.gradeId,
                subjectId: this.$route.params.subjectId,
            }
        },
  • 相关阅读:
    关于Java中的hashCode和equals方法
    web学习--java applets
    web学习——异步支持AsyncSupported
    关于Session的另外一个例子
    Web学习之Session
    Servlet过滤器-日志记录
    什么是XML?
    企业级应用和互联网应用的异同
    J2EE Map
    个人所犯错误总汇
  • 原文地址:https://www.cnblogs.com/sanqianjin/p/10767093.html
Copyright © 2011-2022 走看看