26-router中嵌套路由的使用
1、创建父路由
2、创建子路由

3、添加到父路由中

4、在父亲的template中添加
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="app">
<router-link :to="{name:'Users'}">用户列表</router-link>
<router-view></router-view>
</div>
</body>
</html>
<template id="users">
<div>
<h3>用户列表</h3>
<hr>
<a href="#/users/useradd">添加用户信息</a>
<table border="1">
<tr>
<th>id</th>
<th>name</th>
<th>age</th>
<th>salary</th>
<th>操作</th>
</tr>
<tr v-for="user in users">
<td>{{user.id}}</td>
<td>{{user.name}}</td>
<td>{{user.age}}</td>
<td>{{user.salary}}</td>
<td><a href="#">删除</a> <router-link :to="{name:'useredit', query:{id:user.id, name: user.name, age:user.age, salary: user.salary}}">修改</router-link></td>
</tr>
</table>
<!--展示子路由组件标签-->
<router-view></router-view>
</div>
</template>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<!--路由cdn-->
<script src="https://unpkg.com/vue-router/dist/vue-router.js "></script>
<script>
//users组件
const users = {
template:`#users`,
data(){
return{
users:[]
}
},
created(){
//模拟发送axios从后端拿到数据
this.users = [{id:1, name:'xiaochen', age:23, salary:2300}]
}
};
//useradd组件
const useradd = {
template: `<div><br> 姓名:<input type="text"> <br> 年龄:<input type="text"> <br> 工资:<input type="text"> <br> <input type="submit" value="提交"></div>`
}
//useredit修改组件
const useredit = {
template: `<div><br> id:<input type="text" v-model="user.id"> <br> 姓名:<input type="text" v-model="user.name"> <br> 年龄:<input type="text" v-model="user.age"> <br> 工资:<input type="text" v-model="user.salary"> <br> <input type="button" @click="edituser" value="提交"></div>`,
data(){
return{
user:{}
}
},
methods: {
edituser(){
//发送axios请求更新用户
// axios.post("url", this.user).then(res=>{
// this.user = {};//清空表格数据
// this.$router.push({name:'users'});//切换路由
// });
this.$router.push({name:'Users'});
}
},
created() {
console.log(this.$route.query.id);
this.user.id = this.$route.query.id;
this.user.name = this.$route.query.name;
this.user.age = this.$route.query.age;
this.user.salary = this.$route.query.salary;
}
}
const router = new VueRouter({
routes:[
{
path:'/users', name:'Users', component:users,
children:[//嵌套子组件路由 注意:嵌套路由中子路由不能使用/开头 访问子路由 /users/useradd
{path: 'useradd', name:'useradd', component: useradd},
{path: 'useredit', name: 'useredit', component: useredit}
]
},
]
});
const app = new Vue({
el: "#app",
data:{},
methods:{},
components:{
users
},
router:router
});
</script>

浙公网安备 33010602011771号