zoukankan      html  css  js  c++  java
  • vue路由传参的三种方式区别(params,query)

    最近在做一个项目涉及到列表到详情页的参数的传递,网上搜索一下路由传参,结合自己的写法找到一种适合自己的,不过也对三种写法都有了了解,在此记录一下 

    1  <ul class="table_info" v-for="item in customeLsit">
    2        <li>{{item.name}}</li>
    3        <li>{{item.phone}}</li>
    4        <li>{{item.date}}</li>
    5        <li class="detail" @click="customeDetail(item.id)">详情</li>

    这是列表页面,需要传递参数到详情页,下面给出三种方法

    方法一:直接在路由路径后面加参数

    customeDetail(id){
          console.log('id',id);
           this.$router.push({
            path:'/custome/customeDetailPage/${id}',
           })
        },
    需要对应路由配置如下:
     {
          path:'/custome/customeDetailPage/:id',
          component:CDetailPage
        },
    //需要在path中添加/:id来对应参数
    
    //详情页获取传递的参数
     methods:{
        getParams(){
          let routerParams = this.$route.params.id;
           this.customId = routerParams;
           console.log('id',routerParams);
        },
    
      },
      created(){
        this.getParams()
      }

    方法二:利用name属性来匹配路由,然后通过params传递参数

     1 //列表页面传参数
     2 customeDetail(id){
     3       console.log('id',id);
     4        this.$router.push({
     5         name:'CDetailPage', //注意一定要用name属性匹配路由
     6         params:{
     7           dataObj:id
     8         }
     9        })
    10     },
    11 //对应路由配置
    12 {
    13       path:'/custome/customeDetailPage',
    14       name:'CDetailPage',
    15       component:CDetailPage
    16     },
    17 //详情页面接收参数
    18  methods:{
    19     getParams(){
    20       let routerParams = this.$route.params.dataObj;
    21        this.customId = routerParams;
    22        console.log('id',routerParams);
    23     },
    24 
    25   },
    26   created(){
    27     this.getParams()
    28   }

    第三种方法:通过path匹配路由,然后通过query传递参数

    //列表页面传参
    customeDetail(id){
          console.log('id',id);
           this.$router.push({
            path:'/custome/customeDetailPage',
            query:{
              name:'id',
              dataObj:id
            }
           })
        },
    //路由配置,name属性可有可无
    {
          path:'/custome/customeDetailPage',
          component:CDetailPage
        },  //我写的时候是没有用name属性
    //详情页获取属性
     methods:{
        getParams(){
          let routerParams = this.$route.query.dataObj;
           this.customId = routerParams;
           console.log('id',routerParams);
        },
    
      },
      created(){
        this.getParams()
      }

    这是query传参是路由显示的参数

  • 相关阅读:
    "无法在证书存储区中找到清单签名证书"的解决办法
    ASP.net从服务器端向客户端弹出alert对话框,但不使页面变成白板
    C#日期相关操作
    在Lucene.net实现自定义排序
    做技术二十多年 突然明白的道理
    .net中sql防止注入式攻击
    开发可统计单词个数的Android驱动程序(1)
    乐博Android客户端(新浪微博)1.01发布,欢迎各位童鞋试用
    百度面试题:求绝对值最小的数
    赶紧升级到Android 2.3.4,体验最新的Android技术
  • 原文地址:https://www.cnblogs.com/kingsnowcan/p/vue-router_params.html
Copyright © 2011-2022 走看看