Vue路由獲取路由參數


原文參考:https://www.cnblogs.com/sese/p/9595625.html

vue路由設置路由參數有2種方式:

1.通過query配置:

<router-link :to="{ name:'login',query:{id:1} }">登錄</router-link>

通過query配置的路徑顯示如下:

 

2.通過params配置:

<router-link :to="{ name:'register',params:{'name':'San'} }">注冊</router-link>

通過query配置的路徑顯示如下:

 

通過該方法配置的參數,需要在配置路由的時候給參數留個坑,如下圖:

 

 獲取路由參數的方法:

1.通過query配置的:

this.$route.query

 

 2.通過params配置的:

this.$route.params

 

相關代碼:

復制代碼
<!DOCTYPE html>
<html lang="en">

<head>
    <title>路由參數</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    
</head>

<body>

    <div id="app">
    </div>
    <script src="https://cdn.bootcss.com/vue/2.5.15/vue.js"></script>
    <script src="js/vue-router.js"></script>
    <script>
        var Login = {
            template:`<div>我是登錄頁面</div>`,
            created() {
                console.log(this.$route.query)
            },
            
        }

        var Register = {
            template:`<div>我是注冊頁面</div>`,
            created() {
                console.log(this.$route.params)
            },
        }

        Vue.use(VueRouter);

        var router = new VueRouter({
            routes:[
                {name:'login',path:'/login',component:Login},
                //通過params傳遞的路由參數需要用 :參數名 來占個坑
                {name:'register',path:'/register/:name',component:Register}
            ]
        });
        
        var App = {
            template:`
                <div>
                    <router-link :to="{ name:'login',query:{id:1} }">登錄</router-link>
                    <router-link :to="{ name:'register',params:{'name':'San'} }">注冊</router-link>
                    <router-view></router-view>
                </div>
            `
        }

        var vm = new Vue({
            el: '#app',
            router:router,
            components: {
                app:App
            },
            template:`<app></app>`
        });
    </script>

</body>

</html>
復制代碼

 

補充說明:

$route:路由信息對象,只讀對象;

$router:路由操作對象 ,只寫對象。 

 

 

原文參考:https://www.cnblogs.com/superlizhao/p/8527317.html

一、<router-link :to="...">
  to里的值可以是一個字符串路徑,或者一個描述地址的對象。例如:

復制代碼
// 字符串
<router-link to="apple"> to apple</router-link>
// 對象
<router-link :to="{path:'apple'}"> to apple</router-link>
// 命名路由
<router-link :to="{name: 'applename'}"> to apple</router-link>
//直接路由帶查詢參數query,地址欄變成 /apple?color=red
<router-link :to="{path: 'apple', query: {color: 'red' }}"> to apple</router-link>
// 命名路由帶查詢參數query,地址欄變成/apple?color=red
<router-link :to="{name: 'applename', query: {color: 'red' }}"> to apple</router-link>
//直接路由帶路由參數params,params 不生效,如果提供了 path,params 會被忽略
<router-link :to="{path: 'apple', params: { color: 'red' }}"> to apple</router-link>
// 命名路由帶路由參數params,地址欄是/apple/red
<router-link :to="{name: 'applename', params: { color: 'red' }}"> to apple</router-link>
復制代碼

二、router.push(...)方法
  同樣的規則也適用於router.push(...)方法。

復制代碼
// 字符串
router.push('apple')
// 對象
router.push({path:'apple'})
// 命名路由
router.push({name: 'applename'})
//直接路由帶查詢參數query,地址欄變成 /apple?color=red
router.push({path: 'apple', query: {color: 'red' }})
// 命名路由帶查詢參數query,地址欄變成/apple?color=red
router.push({name: 'applename', query: {color: 'red' }})
//直接路由帶路由參數params,params 不生效,如果提供了 path,params 會被忽略
router.push({path:'applename', params:{ color: 'red' }})
// 命名路由帶路由參數params,地址欄是/apple/red
router.push({name:'applename', params:{ color: 'red' }})
復制代碼

三、注意點

1、關於帶參數的路由總結如下:

無論是直接路由“path" 還是命名路由“name”,帶查詢參數query,地址欄會變成“/url?查詢參數名:查詢參數值“;
直接路由“path" 帶路由參數params params 不生效;
命名路由“name" 帶路由參數params 地址欄保持是“/url/路由參數值”;

2、設置路由map里的path值:

 帶路由參數params時,路由map里的path應該寫成:  path:'/apple/:color' ;
 帶查詢參數query時,路由map里的path應該寫成: path:'/apple' ;

3、獲取參數方法:

在組件中:  {{$route.params.color}}
在js里: this.$route.params.color


免責聲明!

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



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