zoukankan      html  css  js  c++  java
  • vue路由--嵌套路由

    静态嵌套路由:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div id="app">
        <router-link to="/green">green</router-link>
        <router-link to="/fruit">fruit</router-link>
    <router-view></router-view>
    </div>
    <template id="green">
    <div>蔬菜
        <router-link to="/green/organic">有机</router-link>
        <router-link to="/green/inorganic">无机</router-link>
        <router-view></router-view>
    </div>
    </template>
    <template id="fruit">
    <div>水果
        <router-link to="/fruit/sweet">甜的</router-link>
        <router-link to="/fruit/acid">酸的</router-link>
        <router-view></router-view>
    </div>
    </template>
    </body>
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    <script>
        //父路由 有蔬菜,水果,蔬菜里面有有机蔬菜,无机蔬菜 ,水果里面有甜的酸的
        let green={template:'#green'}
        let organic={template:"<div>有机蔬菜organic</div>"}
        let inorganic={template:"<div>无机蔬菜inorganic</div>"}
        let fruit={template:'#fruit'}
        let sweet={template:"<div>甜的</div>"}
        let acid={template:"<div>酸的</div>"}
        //路由路径映射表
        let routes=[
            //路由默认去的第一个组件
            {
                path:'',
                component:green
            },
            {
                path:"/green",
                component:green,
                children:[
                    {
                        path:"",
                        component:organic
                    },
                    {
                        path:"organic",
                        component:organic
                    },
                    {
                        path:"inorganic",
                        component:inorganic
                    }
                ]
            },
            {
                path:"/fruit",
                component:fruit,
                children:[
                    {
                        path:"",
                        component:sweet
                    },
                    {
                        path:"sweet",
                        component:sweet
                    },
                    {
                        path:"acid",
                        component:acid
                    }
                ]
    
            },
            //所有没有找到时候,去地址/green的组件
            {
                path:"*",
                redirect:'/green'
            }
    
        ]
        //实例化一个路由
        let router=new VueRouter({
            routes
        })
        let vm=new Vue({
            el:"#app",
            data:{
            },
            router
        })
    </script>
    </html> 

    嵌套路由要通过子路由的方式实现,如果改成以下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div id="app">
        <router-link to="/green">green</router-link>
        <router-link to="/fruit">fruit</router-link>
    <router-view></router-view>
    </div>
    <template id="green">
    <div>蔬菜
        <router-link to="/green/organic">有机</router-link>
        <router-link to="/green/inorganic">无机</router-link>
        <router-view></router-view>
    </div>
    </template>
    <template id="fruit">
    <div>水果
        <router-link to="/sweet">甜的</router-link>
        <router-link to="/acid">酸的</router-link>
        <router-view></router-view>
    </div>
    </template>
    </body>
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    <script>
        //父路由 有蔬菜,水果,蔬菜里面有有机蔬菜,无机蔬菜 ,水果里面有甜的酸的
        let green={template:'#green'}
        let organic={template:"<div>有机蔬菜organic</div>"}
        let inorganic={template:"<div>无机蔬菜inorganic</div>"}
        let fruit={template:'#fruit'}
        let sweet={template:"<div>甜的</div>"}
        let acid={template:"<div>酸的</div>"}
        //路由路径映射表
        let routes=[
            //路由默认去的第一个组件
            {
                path:'',
                component:green
            },
            {
                path:"/green",
                component:green,
                children:[
                    {
                        path:"",
                        component:organic
                    },
                    {
                        path:"organic",
                        component:organic
                    },
                    {
                        path:"inorganic",
                        component:inorganic
                    }
                ]
            },
            {
                path:"/fruit",
                component:fruit
     
            },
            {
                path:"/sweet",
                component:sweet
     
            }, 
            {
                path:"/acid",
                component:acid
     
            },
            //所有没有找到时候,去地址/green的组件
            {
                path:"*",
                redirect:'/green'
            }
     
        ]
        //实例化一个路由
        let router=new VueRouter({
            routes
        })
        let vm=new Vue({
            el:"#app",
            data:{
            },
            router
        })
    </script>
    </html>

    首先没法用类似/fruit/sweet的路由跳转

    用/sweet这样的路由,会把模板渲染到第一个router-view里

    把fruit里的两种类型变成动态参数(接收任意水果类型作为动态参数):

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div id="app">
        <router-link to="/green">green</router-link>
        <router-link to="/fruit">fruit</router-link>
    <router-view></router-view>
    </div>
    <template id="green">
    <div>蔬菜
        <router-link to="/green/organic">有机</router-link>
        <router-link to="/green/inorganic">无机</router-link>
        <router-view></router-view>
    </div>
    </template>
    <template id="fruit">
    <div>水果
        <router-link to="/fruit/sweet">甜的</router-link>
        <router-link to="/fruit/acid">酸的</router-link>
        <router-view></router-view>
    </div>
    </template>
    </body>
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    <script>
        //父路由 有蔬菜,水果,蔬菜里面有有机蔬菜,无机蔬菜 ,水果里面有甜的酸的
        let green={template:'#green'}
        let organic={template:"<div>有机蔬菜organic</div>"}
        let inorganic={template:"<div>无机蔬菜inorganic</div>"}
        let fruit={template:'#fruit'}
        let fruittype ={template:"<div>{{ $route.params.type }}</div>"}
        //let sweet={template:"<div>甜的</div>"}
        //let acid={template:"<div>酸的</div>"}
        //路由路径映射表
        let routes=[
            //路由默认去的第一个组件
            {
                path:'',
                component:green
            },
            {
                path:"/green",
                component:green,
                children:[
                    {
                        path:"",
                        component:organic
                    },
                    {
                        path:"organic",
                        component:organic
                    },
                    {
                        path:"inorganic",
                        component:inorganic
                    }
                ]
            },
            {
                path:"/fruit",
                component:fruit,
                children:[
                    {
                        path: '/', 
                        redirect: 'sweet'
                    },
                    {
                        path:":type",
                        component:fruittype
                    }
         
                ]
    
            },
            //所有没有找到时候,去地址/green的组件
            {
                path:"*",
                redirect:'/green'
            }
    
        ]
        //实例化一个路由
        let router=new VueRouter({
            routes
        })
        let vm=new Vue({
            el:"#app",
            data:{
            },
            router
        })
    </script>
    </html>
    

     redirect实现默认参数,或跳转到默认页面,解决进入页面不点链接时无组件挂载的问题

  • 相关阅读:
    IntelliJ IDEA快捷键
    Find Minimum in Rotated Sorted Array
    爬取淘宝交易记录的爬虫
    MR并行算法编程过程中遇到问题的思考
    Map.Entry用法示例
    给定一组数和一个目标值,返回和为目标值的集合(集合中的元素可重复)
    位运算:获取集合的子集
    Linux每次开机都要source profile的解决办法
    mysql数据导入导出
    linux下nginx编译安装(抄别人的,方便查看)
  • 原文地址:https://www.cnblogs.com/cowboybusy/p/9511620.html
Copyright © 2011-2022 走看看