路由中的传参方式
2019-08-16 本文已影响0人
最爱喝龙井
query传参
在vm实例身上有一个$route属性,他是一个对象,里面有一个query属性,保存着以查询字符串的形式传入的数据

$route对象:

例:
<!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>