前端采用前后端分离的方式进行开发,我们使用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常用属性使用案例讲解
# 可以通过
# 如果没有
# 多个
# 可以用
# 自定义
# 跳转
# 就可以
# 默认值
# 还可以
# 你可以
# 一是
# 则是
# 是从
# 三种
# 可以实现
# 来做
# 则在
# 首页
# 再过
# 则为
相关文章:
如何挑选最适合建站的高性能VPS主机?
建站之星安装后界面空白如何解决?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
建站之星如何保障用户数据免受黑客入侵?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
如何通过建站之星自助学习解决操作问题?
如何自定义建站之星网站的导航菜单样式?
如何用美橙互联一键搭建多站合一网站?
建站之星后台管理:高效配置与模板优化提升用户体验
微信推文制作网站有哪些,怎么做微信推文,急?
实例解析angularjs的filter过滤器
制作营销网站公司,淘特是干什么用的?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
如何访问已购建站主机并解决登录问题?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
开封网站制作公司,网络用语开封是什么意思?
如何用景安虚拟主机手机版绑定域名建站?
如何在阿里云虚拟主机上快速搭建个人网站?
建站VPS推荐:2025年高性能服务器配置指南
建站之星代理如何获取技术支持?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
制作电商网页,电商供应链怎么做?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
如何在云主机上快速搭建网站?
文字头像制作网站推荐软件,醒图能自动配文字吗?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
建站主机是否等同于虚拟主机?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
,如何利用word制作宣传手册?
家具网站制作软件,家具厂怎么跑业务?
非常酷的网站设计制作软件,酷培ai教育官方网站?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
北京网站制作公司哪家好一点,北京租房网站有哪些?
香港服务器WordPress建站指南:SEO优化与高效部署策略
无锡营销型网站制作公司,无锡网选车牌流程?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
如何通过商城自助建站源码实现零基础高效建站?
建站之星如何实现五合一智能建站与营销推广?
javascript中的try catch异常捕获机制用法分析
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
如何将凡科建站内容保存为本地文件?
建站之星收费标准详解:套餐费用及年费价格表一览
c++ stringstream用法详解_c++字符串与数字转换利器
移民网站制作流程,怎么看加拿大移民官网?
简单实现Android验证码
电商平台网站制作流程,电商网站如何制作?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
*请认真填写需求信息,我们会在24小时内与您取得联系。