• (尚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>
  • 相关阅读:
    react-redux不完全指北
    ztext简单的介绍
    svg配合css多变形
    微服务异常感知与快速定位排错
    K8S(rancher) 服务(POD)定时重启服务方案
    记一次简单的微服务项目拆分
    K8S(rancher)Nginx Ingress Controller 负载均衡多路径问题解决方案
    15个必须知道的JavaScript数组方法
    python实现视频分帧
    python实现随机复制若干个文件到新目录
  • 原文地址:https://www.cnblogs.com/curedfisher/p/12289789.html
Copyright © 2020-2023  润新知