1. 程式人生 > >Vue中router兩種傳參方式

Vue中router兩種傳參方式

Vue中router兩種傳參方式

1.Vue中router使用query傳參

相關Html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/vue-2.4.0.js"></script>
    <script src="../js/vue-resource-1.3.4.js"></script>
    <!--1.引入vue-router-->
    <script src="../lib/vue-router-3.0.1.js"></script>
    <link rel="stylesheet" href="../bootstrap-3.3.7-dist/css/bootstrap.min.css">

    <style>
        .myactive {
            color: red;
            font-size: 20px;
        }

        .v-enter,
        .v-leave-to {
            opacity: 0;
            transform: translateX(140px);
        }

        .v-enter-active,
        .v-leave-active {
            transition: all 0.5s ease;

        }


    </style>
</head>
<body>
<div id="app">

    <router-link to="/login?id=10&name='zhangsan'">登入</router-link>
    <router-link to="/register">註冊</router-link>

    <!--router-view,提供的用來當做佔位符的 router中的規則會展現到這個裡面去-->
    <transition mode="out-in">
        <router-view></router-view>
    </transition>
</div>

<script>
    var login = {
        template: '<h1>這個是登入元件--- {{$route.query.id}}----{{$route.query.name}} </h1>',
        data:function () {
            return {
                 msg:'123'
            }
        },
        created:function () {
            console.log(this.$route);
        }
    }
    var register = {
        template: '<h1>註冊元件</h1>'
    }

    //在new
    var routerObj = new VueRouter({
        //這個配置物件中的route表示路由匹配規則的意思
        //1.path,表示監聽,路由的連線地址
        //2.component 表示路由匹配到的path
        routes: [
            //注意:component屬性值,必須是一個元件模板物件,不能是引用名稱
            {path: '/', redirect: '/login'},
            {path: '/login', component: login},
            {path: '/register', component: register}
        ],
        linkActiveClass: 'myactive'
    })

    var vm = new Vue({
        el: "#app",
        data: {},
        methods: {},
        router: routerObj //將路由規則物件,註冊到vm例項上,用來監聽地址物件

    })

</script>
</body>
</html>

2Vue中router使用params傳參

相關Html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/vue-2.4.0.js"></script>
    <script src="../js/vue-resource-1.3.4.js"></script>
    <!--1.引入vue-router-->
    <script src="../lib/vue-router-3.0.1.js"></script>
    <link rel="stylesheet" href="../bootstrap-3.3.7-dist/css/bootstrap.min.css">

    <style>
        .myactive {
            color: red;
            font-size: 20px;
        }

        .v-enter,
        .v-leave-to {
            opacity: 0;
            transform: translateX(140px);
        }

        .v-enter-active,
        .v-leave-active {
            transition: all 0.5s ease;

        }


    </style>
</head>
<body>
<div id="app">

    <router-link to="/login/10">登入</router-link>
    <router-link to="/register">註冊</router-link>

    <transition mode="out-in">
        <router-view></router-view>
    </transition>
</div>

<script>
    var login = {
        template: '<h1>這個是登入元件--- {{$route.params.id}} </h1>',
        data:function () {
            return {
                msg:'123'
            }
        },
        created:function () {
            console.log(this.$route.params);
        }
    }
    var register = {
        template: '<h1>註冊元件</h1>'
    }

    var routerObj = new VueRouter({
        routes: [
            {path: '/login/:id', component: login},
            {path: '/register', component: register}
        ],
        linkActiveClass: 'myactive'
    })

    var vm = new Vue({
        el: "#app",
        data: {},
        methods: {},
        router: routerObj //將路由規則物件,註冊到vm例項上,用來監聽地址物件

    })

</script>
</body>
</html>