Vue 2.0 路由傳遞參數
Vue 路由傳遞參數 有兩種方式:
一、用name傳遞參數
兩步完成用name傳值並顯示在模板里:
- 在路由文件src/router/index.js里配置name屬性。
1234567routes: [{path: '/',name: 'Hello',component: Hello}] - 模板里(src/App.vue)用$router.name的形勢接收,比如直接在模板中顯示:
1<p>{{ $route.name}}</p>
二、通過<router-link> 標簽中的to傳參
上邊的傳參或許很不正規,也不方便,其實工作中多數傳參是不用name進行傳參的,我們用<router-link>標簽中的to屬性進行傳參,需要注意的是這里的to要進行一個綁定,寫成:to。先來看一下這種傳參方法的基本語法:
1
|
<router-link :to="{name:xxx,params:{key:value}}">valueString</router-link>
|
這里的to前邊是帶冒號的,然后后邊跟的是一個對象形勢的字符串.
- name:就是我們在路由配置文件中起的name值。
- params:就是我們要傳的參數,它也是對象形勢,在對象里可以傳遞多個值。
了解基本的語法后,我們改造一下我們的src/App.vue里的<router-link>標簽,我們把hi1頁面的<router-link>進行修改。
1
|
<router-link :to="{name:'hi1',params:{username:'jspang'}}">Hi頁面1</router-link>
|
把src/reouter/index.js文件里給hi1配置的路由起個name,就叫hi1.
1
|
{path:'/hi1',name:'hi1',component:Hi1},
|
最后在模板里(src/components/Hi1.vue)用$route.params.username進行接收.
1
|
{{$route.params.username}}
|
vue-router 利用url傳遞參數
:冒號的形式傳遞參數
在路由配置文件里以:冒號的形式傳遞參數,這就是對參數的綁定。
- 在配置文件里以冒號的形式設置參數。我們在/src/router/index.js文件里配置路由。
1234{path:'/params/:newsId/:newsTitle',component:Params}
我們需要傳遞參數是新聞ID(newsId)和新聞標題(newsTitle).所以我們在路由配置文件里制定了這兩個值。 - 在src/components目錄下建立我們params.vue組件,也可以說是頁面。我們在頁面里輸出了url傳遞的的新聞ID和新聞標題。
123456789101112131415161718<template><div><h2>{{ msg }}</h2><p>新聞ID:{{ $route.params.newsId}}</p><p>新聞標題:{{ $route.params.newsTitle}}</p></div></template><script>export default {name: 'params',data () {return {msg: 'params page'}}}</script> - 在App.vue文件里加入我們的<router-view>標簽。這時候我們可以直接利用url傳值了。
1<router-link to="/params/198/jspang website is very good">params</router-link> |
正則表達式在URL傳值中的應用
上邊的例子,我們傳遞了新聞編號,現在需求升級了,我們希望我們傳遞的新聞ID只能是數字的形式,這時候我們就需要在傳遞時有個基本的類型判斷,vue是支持正則的。
加入正則需要在路由配置文件里(/src/router/index.js)以圓括號的形式加入。
1
|
path:'/params/:newsId(\\d+)/:newsTitle',
|
加入了正則,我們再傳遞數字之外的其他參數,params.vue組件就沒有辦法接收到。