组件路由除了使用全局组件 router-link 来实现点击跳转(相当于按钮)外,还可以使用组件本身具有的一个实例对象$router及其一些属性来达到目标。
$router 是VueRouter的一个实例对象,相当于一个全局的路由器对象。在Vue实例内部,你可以通过$router访问路由实例,里面含有很多属性和子对象,例如history对象,经常用到的跳转链接就可以调用this.$router.push,this.$router.push会往history栈中添加一个新记录。
| 声明式 | 编程式 |
| <router-link :to=”…” | router.push(…) |
点击 等同于调用 router.push(…)
(…)该方法的参数可以是一个字符串,或者一个描述地址的对象:
// 字符串
router.push('home')
// 对象
router.push({ path: 'home' })
// 命名的路由
router.push({ name: 'user', params: { userId: 123 }})
// 带查询参数,变成 /register?plan=private
router.push({ path: 'register', query: { plan: 'private' }})组件路由跳转实例:
1.
<router-link :to="{name:'PointList', params: { userId: 123 }}">
<i class="icon"><img src="../assets/point.png" alt=""></i>
<span>点单</span>
</router-link>2.
<footer class="version" @click="goPage('Author')">v 1.0</footer>
//Js:
methods: {
goPage(url, param) {
this.$router.push({ name: url });
}
}三、vue路由对象$route(只读)
在使用了vue-router的应用中,路由对象会被注入每个组件中,赋值为this.$route,并且当路由切换时,路由对象会被更新。所以route相当于当前正在跳转的路由对象,可以从里面获取name,path,params,query等,即包含了当前URL解析得到的信息,还有URL匹配到的路由记录。
路由对象暴露了以下属性(常见):
1、$route.path
字符串(string)。等于当前路由对象的路径,会被解析为绝对路径,
如:http://example.com/#/login?name=aa,this.$route.path
,输出“/login”,即对应上面1中路由匹配时routes配置中的“path”;
2、$route.name
字符串(string)。有时候,通过一个名称来标识一个路由显得更加方便,特别是在链接一个路由,或者是执行一些跳转的时候。同样,这里的name也对应了routes配置中给某个路由设置名称的name值:
要链接到一个命名路由,可以给router-link的to属性传一个对象:
<router-link :to="{name:'Order', params: { userId: 123 }}">










