全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解vue-router 2.0 常用基础知识点之router-link

前端采用前后端分离的方式进行开发,我们使用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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# vue  # router  # link  # vue2.0  # vue.js  # 详解vue中router-link标签所必备了解的属性  # vue router-link传参以及参数的使用实例  # vue路由跳转router-link清除历史记录的三种方式(总结)  # vue router-link 默认a标签去除下划线的实现  # Vue 页面跳转不用router-link的实现代码  # Vue中router-link常用属性使用案例讲解  # 可以通过  # 如果没有  # 多个  # 可以用  # 自定义  # 跳转  # 就可以  # 默认值  # 还可以  # 你可以  # 一是  # 则是  # 是从  # 三种  # 可以实现  # 来做  # 则在  # 首页  # 再过  # 则为 


相关文章: 建站之星安装后如何配置SEO及设计样式?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  如何快速搭建高效WAP手机网站?  建站之星免费模板:自助建站系统与智能响应式一键生成  建站之星代理平台如何选择最佳方案?  制作公司内部网站有哪些,内网如何建网站?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  制作国外网站的软件,国外有哪些比较优质的网站推荐?  如何将凡科建站内容保存为本地文件?  宝塔面板如何快速创建新站点?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  如何快速搭建个人网站并优化SEO?  建站之星如何保障用户数据免受黑客入侵?  建站之星如何通过成品分离优化网站效率?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  简单实现Android验证码  建站之星下载版如何获取与安装?  视频网站制作教程,怎么样制作优酷网的小视频?  建站之星logo尺寸如何设置最合适?  ,柠檬视频怎样兑换vip?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  如何在香港服务器上快速搭建免备案网站?  如何使用Golang table-driven基准测试_多组数据测量函数效率  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何挑选高效建站主机与优质域名?  C#怎么使用委托和事件 C# delegate与event编程方法  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  建站之星如何助力网站排名飙升?揭秘高效技巧  佛山企业网站制作公司有哪些,沟通100网上服务官网?  建站与域名管理如何高效结合?  如何在服务器上三步完成建站并提升流量?  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星2.7模板快速切换与批量管理功能操作指南  建站三合一如何选?哪家性价比更高?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  浅谈Javascript中的Label语句  成都网站制作报价公司,成都工业用气开户费用?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  海南网站制作公司有哪些,海口网是哪家的?  如何在云主机上快速搭建多站点网站?  如何安全更换建站之星模板并保留数据?  建站之星价格显示格式升级,你的预算足够吗?  C++如何使用std::optional?(处理可选值)  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。