vue2 中this.$emit(“update:xx“,value)和xx.sync的用法

1 父组件

<div>

      <!-- dialog 弹框-->

      <button @click="visible = !visible" >点击弹框</button>

        //第一种用法

      <!-- <dialog-one  visible="visible" @update:visible="changeMessage" > -->

        //第二种用法

      <dialog-one  :visible.sync="visible" >

        <template v-slot:title>

          <h3>标题</h3>

        </template>

        <template>

          <p>主体内容,随便写点什么...</p>

          <p>主体内容,随便写点什么...说你想说的</p>

          <!-- <input type="text" placeholder="请输入信息" /> -->

        </template>

        <template v-slot:footer>

          <!-- <btn-one /> -->

          <button class="qx" @click="visible = false">取消</button>

          <button class="qd" type="primary" @click="visible = false">确定</button>

        </template>

      </dialog-one>

    </div>

 data(){

    return{

      visible: false,

    }

  },

  methods:{

    changeMessage(str){

      alert(1)

      this.visible = str;

    }

  }

2 子组件

<template>

  <div>

    <transition name="dialog-fade">

      <!--self:事件修饰符,只有点击自己才触发,点击子元素不触发  -->

      <div class="dialogWrapper" v-show="visible" @click.self="handleClose">

            <button class="dialogHeaderbtn" @click="handleClose">

              x

            </button>

        </div>

</transition>
 

 methods: {

    handleClose() {

      //visible是父组件传过来的props,子组件不能直接修改,需要子传父

      this.$emit("update:visible", false);//子组件传递到父组件,用以上两种方法任意一种都可以

        //第一种用法,必须在methods中写函数

  <!-- <dialog-one  visible="visible" @update:visible="changeMessage" > -->

        //第二种用法: 不需要写函数,直接父组件可以接受响应。

   //   <dialog-one  :visible.sync="visible" >

    },

  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值