美文网首页
命名视图来实现经典布局

命名视图来实现经典布局

作者: 最爱喝龙井 | 来源:发表于2019-08-16 11:50 被阅读0次

    所谓的经典布局,就是上面一个header,左侧一个侧边栏,右侧为内容的主题部分的结构布局

    想要在一个页面显示多个<router-view>占位标签,现在学到的东西还做不到

    例:

    <!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>
    </head>
    
    <body>
        <div id="app">
            <router-view></router-view>
            <router-view></router-view>
            <router-view></router-view>
        </div>
    
        <script>
            var header = {
                template: '<h1>header</h1>'
            }
            var leftBox = {
                template: '<h1>leftBox</h1>'
            }
            var mainBox = {
                template: '<h1>mainBox</h1>'
            }
            var router = new VueRouter({
                routes: [
                    {path: '/', component: header},
                    {path: '/leftBox', component: leftBox},
                    {path: '/mainBox', component: mainBox}
                ]
            })
            var vm = new Vue({
                el: '#app',
                data: {},
                methods: {},
                router
            });
        </script>
    </body>
    
    </html>
    

    页面显示,如下:

    image.png

    此时,我们输入路径三个占位标签都显示的是同样的内容,这不是我们想要的,思考一下,我们感觉应该有一个判断的机制,来控制显示的内容

    想要分别显示不同的内容,此时我们的component属性,就无能为力了,这是我们可以借助components属性,这个属性是一个对象,里面可以自定义键值对,来链接我们的组件模板对象,然后,在<router-view name='定义的名字'>元素中,添加一个name属性,这个属性的值就是我们在components对象中定义的键名

    <!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>
    </head>
    
    <body>
        <div id="app">
            <router-view></router-view>
            <router-view name='left'></router-view>
            <router-view name='main'></router-view>
        </div>
    
        <script>
            var header = {
                template: '<h1>header</h1>'
            }
            var leftBox = {
                template: '<h1>leftBox</h1>'
            }
            var mainBox = {
                template: '<h1>mainBox</h1>'
            }
            var router = new VueRouter({
                routes: [
                    {path: '/', components: {
                        default: header,
                        left: leftBox,
                        main: mainBox
                    }},
                ]
            })
            var vm = new Vue({
                el: '#app',
                data: {},
                methods: {},
                router
            });
        </script>
    </body>
    
    </html>
    

    浏览器显示,如下

    image.png

    相关文章

      网友评论

          本文标题:命名视图来实现经典布局

          本文链接:https://www.haomeiwen.com/subject/jnsfsctx.html