vue父组件向子组件传值和方法

28 篇文章 0 订阅

在开始前,我们先开科普下父子组件的关系,简单来说:谁被引入,谁就是子组件;谁引入,谁就是父组件。

所有的组件都可能是子组件,比方说你爸爸可以有3个儿子(子组件),同时你爸爸也是你爷爷的N个儿子之一,而你,也可以有N个儿子。具体的话可以找下各位大佬的父子组件关系贴,这里不多赘述直接开始。

Refund.vue文件通过props:["lists","goDetails"]来接收父组件传过来的lists值与goDetails方法

<template>
  <div class="container">

    <div class="container-title">
      <ul>
        <li>订单号</li>
        <li>发起退款时间</li>
        <li>退款进度</li>
        <li>金额</li>
        <li>操作</li>
      </ul>
    </div>

    <div class="container-form">
      <ul v-for="list in lists" :key="list.id">
        <li v-if="list.refundCode">{{list.refundCode}}</li>
        <li v-else>{{list.orderCode}}</li>
        <li v-if="list.applyTime">{{list.applyTime}}</li>
        <li v-else>{{list.createTime}}</li>
        <li v-if="list.refundStatus===0">申请退款中</li>
        <li v-else-if="list.refundStatus===1">服务商同意退款</li>
        <li v-else-if="list.refundStatus===2">服务商拒绝退款</li>
        <li v-else-if="list.refundStatus===3">退款成功</li>
        <li v-else-if="list.refundStatus===4">平台拒绝退款</li>
        <li v-else-if="list.orderStatus===330">申请退款中</li>
        <li style="color: red">¥{{list.actualMoney}}</li>
        <li><a style="color: #00a0ff" @click="goDetails(list)">详情</a></li>
      </ul>
    </div>
  </div>
</template>

<script>
    export default {
        name: "Refund",
        props:["lists","goDetails"]
    }
</script>

<style lang="less" scoped>

  .container{
    margin-top: 15px;
    position: relative;
    .container-title{
      background-color: #f5f5f5;
      border: 1px solid #e7e7e7;
      width: 880px;
      height: 40px;
      line-height: 40px;
        ul{
          li{
            display:inline-block;
            width: 160px;
            /*margin-right: -5px;*/
            text-align: center;
            font-size: 14px;
          }
        }
      }
    .container-form{
      margin-top: 10px;
      ul{
        li{
          font-size: 15px;
          width: 160px;
          text-align: center;
          display:inline-block;
          border-bottom: 1px solid #e7e7e7;
          margin-bottom: 10px;
          line-height: 40px;
          height: 40px;
        }
      }
    }
    }
</style>

而父组件HousekeepingRefund.vue则通过:lists="lists" :goDetails="goDetails"向子组件传值和方法

<template>
  <div>
    <Refund :lists="lists" :goDetails="goDetails"></Refund>
  </div>
</template>

<script>
  import Refund from "./Refund";
    export default {
        name: "HousekeepingRefund",
        components:{Refund},
        data(){
            return{
                lists:[]
            }
        },
        created(){
            this.getData()
        },
        methods:{
            getData(){
                this.$axios.get(this.GLOBAL.JiedanURL).then(res =>{
                    this.lists = res.data.data.list;
                })
            },
            goDetails(list){
                console.log(list)
            }
        }
    }
</script>

<style scoped>

</style>

来看下运行结果吧

而点击详情

一个简单的dome就完成了,只要你接口的命名相同,那么你只需要写一个父组件引用该子组件,即可使用。

直接复制粘贴可能会出问题,CSS的编译是less,你还需要安装下less哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值