国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

詳解vue-router 2.0 常用基礎知識點之router-link

2019-11-19 16:37:06
字體:
來源:轉載
供稿:網友

前端采用前后端分離的方式進行開發,我們使用vue2.0框架,做單頁面應用難免會用到vue-router,今天把項目中的用到router-link摘出來,一是想整理一下這些用法,方便下次快速查找,二是重新再過一下vue-router,增加熟悉度。也希望下面這些例子能幫到其他使用vue-router的朋友。

1,$route.params

類型: Object

一個 key/value 對象,包含了 動態片段 和 全匹配片段,如果沒有路由參數,就是一個空對象。

path: '/detail/:id' 動態路徑參數 以冒號開頭

const routes = [ {path: '/detail/:id', component: Detail, name: 'detail', meta: {title: ''}}, {path: '/activity', component: Activity, name: 'activity', meta: {isNeedAuth: false, title: '活動現場'}},];

還可以在一個路由中設置多段『路徑參數』,對應的值都會設置到 $route.params 中

1個參數

模式: /user/:username

匹配路徑: /user/evan

$route.params:{ username: 'evan' }

多個參數

模式: /user/:username/post/:post_id

匹配路徑:/user/evan/post/123

$route.params:{ username: 'evan', post_id: 123 }

復用組件時,想對路由參數的變化作出響應的話,你可以簡單地 watch(監測變化) $route 對象:

const User = { template: '...', watch: { '$route' (to, from) {  // 對路由變化作出響應... } }}

或者像下面這樣,只要$route發生變化,就可以做某事:

export default { data () { return {} }, watch: { // 如果路由有變化,會再次執行該方法 '$route': 'doSomeThing' }, methods: { doSomeThing(){} }}

綜合案例

// 當匹配到一個路由時,參數值會被設置到 this.$route.params,可以在每個組件內使用。// 可以通過this.$route.params.id來取上動態的id<router-link :to="{path: '/detail/' + this.$route.params.id}" >此團詳情</router-link>// 還可以用命名路由的方式:<router-link :to="{ name: 'detail', params:{ id: this.$route.params.id }}" >此團詳情</router-link>// 還可以用router.push()的方式router.push({name:'detail', params: { id: this.$route.params.id}})// 以上三種方式都可以實現跳轉,都可以通過this.$route.params來取到參數

2,$route.query

類型: Object

一個 key/value 對象,表示 URL 查詢參數。例如,對于路徑 /foo?user=1,則有 $route.query.user == 1,如果沒有查詢參數,則是個空對象。

// 動態數據的查詢參數 export default {  data() {   return {    queryData: {}   }  },  created() {   this.$http.get(url)    .then(function (response) {     // ...     if (data.code == 0) {      this.queryData.order_id = data.content.order_id;      this.queryData.business_id = data.content.business_id;      this.queryData.coupon_id = data.content.coupons.coupon_id;     }     // ...    }, function (response) {     // ...    })  }, }// 使用<router-link :to="{ path: '/backend/verify_coupon', query:this.queryData }">驗證抵扣券</router-link>

3,定義路由的時候可以配置 meta 字段

// 舉個例子const routes = [ {path: '/activity', component: Activity, name: 'activity', meta: {isNeedAuth: false, title: '活動現場'}},];

實際工作中使用的時候就可以像下面這樣:

import { setTitleHack } from './utils';import Activity from './views/activity.vue'import Start from './views/start.vue'// 定義路由的時候在meta中加入自定義字段const routes = [ {path: '/activity', component: Activity, name: 'activity', meta: {isNeedAuth: false, title: '活動現場'}}, {path: '/start', component: Start, name: 'start', meta: {isNeedAuth: false, title: '活動現場'}},];const router = new VueRouter({...});router.beforeEach((to, from, next) => { // 動態修改頁面的title setTitleHack(to.meta.title);  // 根據自定義的路由元信息來做判斷: if (to.meta.isNeedAuth !== false) {  // do something } else {  // do something } next();});

4,append

設置 append 屬性后,則在當前(相對)路徑前添加基路徑。例如,我們從 /a 導航到一個相對路徑 b,如果沒有配置 append,則路徑為 /b,如果配了,則為 /a/b

復制代碼 代碼如下:

<router-link :to="{path:'/coupon/detail/'+item.order_id, append:'true'}"></router-link>

如果上面這個路由是從home頁面跳轉過來,得到的結果就是/home/coupon/detail/id

5,active-class

類型: string

默認值: "router-link-active"

設置 鏈接激活時使用的 CSS 類名。默認值可以通過路由的構造選項 linkActiveClass 來全局配置。

復制代碼 代碼如下:

<router-link tag="li" :to="{path:'/home', activeClass: 'bottom-nav-active'}"></router-link>

7,綜合案例

// 命名路由,append 屬性,查詢參數,router-link渲染成<li>標簽<router-link tag="li" :to="{name:'demandindex', append:true, query: {isFormBackend: 1}, activeClass: 'bottom-nav-active'}"></router-link>// to的值:字符串形式<router-link to="banner.image_url" ></router-link>// to的值:對象形式,拼接多個動態參數<router-link :to="{path: '/my/modify?modify=fullname&val=' + profile.nickname}" ></router-link>// to的值:對象形式<router-link :to="{path: '/home'}">返回首頁</router-link>// to的值:對象形式,拼接動態參數<router-link to="{path: '/backend/coupon_order_detail/' + product.order_id+'?order_status='+product.order_status}"></router-link>// to的值:對象形式,帶一個路徑參數<router-link :to="{path: '/detail/' + this.$route.params.id}" ></router-link>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久治县| 昭觉县| 临颍县| 牟定县| 江北区| 安龙县| 韶山市| 育儿| 内乡县| 宝应县| 阿克陶县| 朝阳区| 大姚县| 浦北县| 大邑县| 兴安县| 泸州市| 高碑店市| 丰城市| 正镶白旗| 建水县| 南平市| 留坝县| 鄂伦春自治旗| 浏阳市| 裕民县| 四子王旗| 汶上县| 济宁市| 靖西县| 泸州市| 开化县| 高邮市| 永靖县| 东安县| 白水县| 佛冈县| 北京市| 额尔古纳市| 乌拉特前旗| 兰溪市|