路由中的传参方式

2019-08-16  本文已影响0人  最爱喝龙井

query传参

在vm实例身上有一个$route属性,他是一个对象,里面有一个query属性,保存着以查询字符串的形式传入的数据

image.png
$route对象:
image.png

例:

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="js/vue.js"></script>
    <script src="js//vue-router-3.0.1.js"></script>
    <style>
        .v-enter,
        .v-leave-to {
            opacity: 0;
            transform: translateX(150px)
        }
        .v-enter-active,
        .v-leave-active {
            transition: all .6s ease;
        }
        .router-link-active {
            color: red;
        }
        .myActive {
            color: green;
        }
    </style>
</head>

<body>
    <div id="app">
        <router-link to='/login?id=10&name=jason'>登陆</router-link>
        <router-link to='/register'>注册</router-link>
        <transition mode='out-in'>
            <router-view></router-view>
        </transition>
    </div>

    <script>
        var tm1 = {
            template:'<h1>hello world {{$route.query.id}} ---- {{$route.query.name}}</h1>',
            created() {
                console.log(this.$route)
            }
        }
        var tm2 = {
            template:'<h1>注册</h1>'
        }
        var routerObj = new VueRouter({
            routes: [
                {path:'/', redirect:'/login'},
                {path:'/login', component: tm1},
                {path:'/register', component: tm2}
            ],
            linkActiveClass: 'myActive'
        })
        var vm = new Vue({
            el: '#app',
            data: {},
            methods: {},
            router: routerObj
        });
    </script>
</body>

</html>

params传参

params也是$route身上的一个属性,里面包含有路由中匹配到的数据,采用这种方式需要修改,路由匹配规则,例如{path: '/login/:id/:name'},然后调用的时候就用,$route.params.定义的属性名来调用

例:

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="js/vue.js"></script>
    <script src="js//vue-router-3.0.1.js"></script>
    <style>
        .v-enter,
        .v-leave-to {
            opacity: 0;
            transform: translateX(150px)
        }
        .v-enter-active,
        .v-leave-active {
            transition: all .6s ease;
        }
        .router-link-active {
            color: red;
        }
        .myActive {
            color: green;
        }
    </style>
</head>

<body>
    <div id="app">
        <router-link to='/login/10/jason'>登陆</router-link>
        <router-link to='/register'>注册</router-link>
        <transition mode='out-in'>
            <router-view></router-view>
        </transition>
    </div>

    <script>
        var tm1 = {
            template:'<h1>hello world ----{{$route.params.id}}----{{$route.params.name}}</h1>',
            created() {
                console.log(this.$route)
            }
        }
        var tm2 = {
            template:'<h1>注册</h1>'
        }
        var routerObj = new VueRouter({
            routes: [
                {path:'/', redirect:'/login'},
                {path:'/login/:id/:name', component: tm1},
                {path:'/register', component: tm2}
            ],
            linkActiveClass: 'myActive'
        })
        var vm = new Vue({
            el: '#app',
            data: {},
            methods: {},
            router: routerObj
        });
    </script>
</body>

</html>
上一篇 下一篇

猜你喜欢

热点阅读