(尚044) vue编程式路由导航

编程式???

假如有两个页面,A页面和B页面,要从A页面跳转到B页面,有两种做法:

法一:<a></a>

法二:无a标签,就是一个按钮;

加点击监听,通过js的方式,实现点击跳转

这就叫做编程式跳转.

=============================================================

编程就是你写js;

注意:写页面,写标签都不是编程

==============================================================

编程式路由导航:通过你写js代码,实现路由的跳转

window.location=url   (url可以是绝对路径,也可以是相对路径),location是定位的意思
==============================================================================
页面效果展示

 

 ====================================================================

路由是如何实现的??

路由的实现有两种方式:

1)  #    hash哈希(h5之前,通过改变路径的哈希值,来实现历史记录的保存,同时还可以监视hash的改变;有了hash值可以得到当前hash值包含的路径,有了路径就可以找到对应的路由组件,找到对应的路由组件就可以拿出来显示)      (h5指html5,html的第5个版本)

2) setState  (h5新推出的api)

push(压进去)     replace(替换)

数组有两种特别的结构:队列和栈

队列:特点:先进先出(如:排队买票)

栈:特点:压栈先进后出

 

================

 this   1)$route(代表当前路由组件,存了一些数据)

     2)$router(路由器,操作路由的方法)

==================================================

 

 ============================================================================================

页面效果展示:

 

 =============================================================================================================

代码展示:

Message.vue

<template>
<div>
<ul>
<!--:key="对象的标识属性,没有的话写index"-->
<!--v-for="(message,index) in messages"这样写也可以,只是index没用-->
<li v-for="message in messages" :key="message.id">
<!--当前是在写js,不是html;地址需要拼串'/home/message/detail/${message.id}'-->
<router-link :to="`/home/message/detail/${message.id}`">{{message.title}}</router-link>
<!--pushShow(id/下标)-->
<button @click="pushShow(message.id)">push 查看</button>
<button @click="replaceShow(message.id)">replace查看</button>
</li>
</ul>
<button @click="$router.back()">回退</button>
<hr>
<router-view></router-view>
</div>
</template>

<script>
export default {
data(){
return {
messages:[]
}
},
//异步获取数据
mounted () {
//模拟ajax请求从后台获取数据
//注意没有名称的回调函数都用箭头函数就没有问题
setTimeout(()=>{
const messages=[
{
id:1,
title:'message001'
},
{
id:2,
title:'message002'
},{
id:4,
title:'message004'
}
]
this.messages=messages
},1000)
},

methods:{
pushShow(id){
this.$router.push(`/home/message/detail/${id}`)
},

replaceShow(id){
this.$router.replace(`/home/message/detail/${id}`)
}
}
}
</script>

<style>

</style>

 

posted @ 2020-02-10 08:27  Curedfisher  阅读(178)  评论(0编辑  收藏  举报