Vue路由-使用children屬性實現路由


在登錄父組件中嵌套兩個字組件 account1和account2,點擊按鈕后,可以在父組件中切換子組件

 

 

  •  第一步,創建父組件,父組件中包含兩個子組件
    • 注意:需要在父組件中設置占位符,用來放置子組件
<template id="tmp1">
    <div>
        <h1>這是登錄父組件</h1>
        <router-link to="/login/account1">子組件account1</router-link>
        <router-link to="/login/account2">子組件account2</router-link>
        <router-view></router-view>
    </div>
</template>

var login = Vue.extend({
    template: '#tmp1'
})
  • 第二步,創建路由規則
    • 子組件的路由規則通過childer屬性創建
    • 子組件的路由規則中path屬性值不要加 /
var routeObj = new VueRouter({
    routes: [
        {
            path: '/login',
            component: login,
            children: [
                {path: 'account1', component: account1},
                {path: 'account2', component: account2},
            ]
        }
    ]
})
  • 整體代碼
<!DOCTYPE html>
<!--suppress ALL -->
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
</head>
<body>
    <div id="app">
        <router-view></router-view>
    </div>
    <template id="tmp1">
        <div>
            <h1>這是登錄父組件</h1>
            <router-link to="/login/account1">子組件account1</router-link>
            <router-link to="/login/account2">子組件account2</router-link>
            <router-view></router-view>
        </div>
    </template>

    <script>
        var account1 = {
            template: '<h1>這是子組件Account1111</h1>'
        }
        var account2 = {
            template: '<h1>這是子組件Account2222</h1>'
        }
        var login = Vue.extend({
            template: '#tmp1'
        })
        var routeObj = new VueRouter({
            routes: [
                {
                    path: '/login',
                    component: login,
                    children: [
                        {path: 'account1', component: account1},
                        {path: 'account2', component: account2},
                    ]
                }
            ]
        })

        var vm = new Vue({
            el: '#app',
            data: {},
            methods: {},
            router: routeObj
        })
    </script>
</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM