让前端飞Web前端之路Vue.js专区

vue路由--命名视图

2019-09-30  本文已影响0人  手指乐

有时候想同时(同级)展示多个视图,而不是嵌套展示,例如创建一个布局,有 sidebar(侧导航) 和 main(主内容) 两个视图,这个时候命名视图就派上用场了。你可以在界面中拥有多个单独命名的视图,而不是只有一个单独的出口。如果 router-view 没有设置名字,那么默认为 default

<!DOCTYPE html>
<!-- saved from url=(0077)https://keepfool.github.io/vue-tutorials/06.Router/basic/basic_01.html#!/home -->
<html>
 
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>abc</title>
</head>
 
<body>
    <div id="app">
        <div class="list-group">
            <router-link class="list-group-item" to="/home">Go to Foo</router-link>
            <router-link class="list-group-item" to="/about">Go to Bar</router-link>
        </div>
     
    <router-view name="a"></router-view>
    <router-view name="b"></router-view>
    </div>
    <template id="homea">
        <div>
            <h1>Home</h1>
            <p>a</p>
        </div>
    </template>
    <template id="homeb">
        <div>
            <h1>Home</h1>
            <p>b</p>
        </div>
    </template>
    <template id="abouta">
        <div>
            <h1>About</h1>
            <p>a</p>
        </div>
    </template>
    <template id="aboutb">
        <div>
            <h1>About</h1>
            <p>b</p>
        </div>
    </template>
    <script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
    <script src="https://cdn.bootcss.com/vue-router/2.7.0/vue-router.min.js"></script>
    <script>
     
 
 
 
    homea = { template: '#homea' };
    homeb = { template: '#homeb' };
    abouta = { template: '#abouta' };
    aboutb = { template: '#aboutb' };
    // About = { template: '<div>bar</div>' }
 
    routes = [{
            path: '/home',
            components: {
                a: homea,
                b: homeb
            }
        },
        {
            path: '/about',
            components: {
                 a: abouta,
                 b: aboutb
            }
        }
    ]
 
    router = new VueRouter({
        routes: routes // (缩写)相当于 routes: routes
    });
 
    app = new Vue({
        router: router
    }).$mount('#app');
    </script>
</body>
 
</html>

注意这样写时不支持的:

{
path: '/about',
components: {
a: "#abouta",
b: "#aboutb"--不能在这里直接用id
}
}

上一篇 下一篇

猜你喜欢

热点阅读