上一次给大家简单说了下什么是动态路由现在我们来讲讲嵌套路由。
1.嵌套路由的使用场景是什么呢?
大家都知道选项卡,在选项卡中,顶部有数个导航栏,中间的主体显示的是内容;这个时候,整个页面是一个路由,然后点击选项卡切换不同的路由来展示不同的内容,这个时候就是路由中嵌套路由。
2.具体是怎么实现的?
① 为了演示,我们现在view文件夹下新建一个title1.vue和title2.vue用来存放不同的内容
代码如下:
<template>
<div class="title1">
这里是title1的内容
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
</style>
代码如下:
<template>
<div class="title2">
这里是title2的内容
</div>
</template>
<script>
export default {
}
</script>
<style scoped>
</style>
② 现在我们在router 》 index.js 中将这上面两个新建的组件引入进来并填写路径,这里的Title1和Title2是作为test.vue页面的子路由,所以要写在children属性下
index.js
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
//引入组件
import Test from "@/view/test"
import Title1 from "@/view/title1"
import Title2 from "@/view/title2"
Vue.use(Router)
export default new Router({
routes: [
{
// path: '/test/:testId',
path:'/test/:testId/name/:testName',
name: 'HelloWorld',
//填写路由参数
component: Test,
children:[{
path: 'title1',
name:'title1',
component: Title1
},
{
path: 'title2',
name:'title2',
component: Title2
}
]
}
]
})
注意:这里需要提个醒的就是填写children子路由的path不要加/
③ 然后我们再去到test.vue中敲:
在这里提个醒,在to后面写路由路径的时候,一定到带上绝对路径,也就是要把test这个父路由路径写进去"/test/title1"
test.vue代码:
<template>
<div class="test">
<!-- 动态路由-->
this is id:{{$route.params.testId}}
<br/>
this is name:{{$route.params.testName}}
<br/>
<!--嵌套路由-->
<router-link to="/test/title1">标题1</router-link>
<router-link to="/test/title2">标题2</router-link>
<router-view></router-view>
</div>
</template>
<script>
export default {
name:'Test',
data() {
return {
msg: 'hello vue'
}
}
}
</script>
<style scoped>
</style>
④ 最后我们进入浏览器点击不同的标题就可以看到不同内容的展示
怎么样是不是很简单,大家一起努力向前冲吧!!!!!!