天天看點

Vue手動通路和傳參

html代碼

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>

</head>
<body>
<div id="app">
    <div>
        <!-- 靜态路由 -->
        <router-link to="/">首頁</router-link>
        <router-link to="/about">關于我們</router-link>
        <!-- 動态路由 -->
        <router-link to="/user/apollo">Apollo</router-link>
        <router-link to="/user/jack">Jack</router-link>
        <!-- 手動通路和傳參 -->
        <button @click="surf">漫遊</button>
    </div>
    <div>
        <!-- 路由視圖 -->
        <router-view></router-view>
    </div>
</div>
    <!-- 注意js導入順序,自己定義的要在下面 -->
    <script src="../js/vue.js"></script>
    <script src="../js/vue-router.js"></script>
    <script src="app.js"></script>
</body>
</html>      

js代碼:

var routes = [
    // 靜态路由
    {
        path: '/',
        component: {
            template: `
            <div>
                <h1>首頁</h1>
            </div>
            `,
        },
    },
    // 靜态路由
    {
        path: '/about',
        component: {
            template: `
            <div>
                <h1>關于我們</h1>
            </div>
            `,
        },
    },
    // 動态路由
    {
        // 注意是斜杠'/'後面在冒号
        path: '/user/:name',
        // 路由别名
        name:'user',
        component: {
            template: `
            <div>
                <!-- 第一種方式:params,動态傳參 -->
                <h1>使用者中心:{{ $route.params.name }}</h1>
                <!-- 第一種寫法:v-bind綁定, to前面 [需要] 加冒号':' -->
                <!--<router-link :to=" '/user/'+$route.params.name+'/more' ">更多資訊</router-link>-->
                <!-- 第二種寫法:append追加, to前面 [不要] 加冒号':' -->
                <router-link to="more" append>更多資訊</router-link>
                <router-view></router-view>
            </div>
            `,
        },
        children: [
            {
                path: 'more',
                component: {
                    template: `
                        <div>
                            <h3>使用者中心:{{ $route.params.name }}</h3>
                            更多内容請點選下方按鈕閱讀......<br>
                            更多内容請點選下方按鈕閱讀......<br>
                            更多内容請點選下方按鈕閱讀......<br>
                            更多内容請點選下方按鈕閱讀......
                        </div>
                    `
                }
            }
        ]
    }
];

// 路由構造
var router = new VueRouter({
    routes: routes,
});

// 執行個體
new Vue({
    el: '#app',
    router: router,
    methods:{
        // 手動通路和傳參
        surf:function () {
            setTimeout(
                function () {
                    this.router.push('/about');
                    setTimeout(function () {
                        // 寫法1
                        this.router.push('/user/apollo');
                        // 寫法2
                        this.router.push({name:'user',params:{name:'jack',}})
                    },2000)
                },2000)
        }
    }
});