修饰符.sync封装弹框组件

153 阅读1分钟

.sync作用

实现父子组件数据之间的双向绑定,与v-model类似

类别在于:一个组件上只能有一个v-model,.sync修饰符可以有多个。

.sync与v-model区别是

  • 相同点:都是语法糖,都可以实现父子组件中的数据的双向通信。

  • 区别点:

    • 格式不同。 v-model="num", :num.sync="num"

    • v-model: @input + value

    • :num.sync: @update:num

    • v-model只能用一次;.sync可以有多个。

对话框封装

1.父组件

<template>
  <div >
    <button  @click="visible=true">这是一个弹框</button>
    <Mydialog :visible.sync='visible'></Mydialog>
    </div>
  
</template>

<script>
import Mydialog from './Mydialog.vue'
export default {
  name: 'App',
  components:{
     Mydialog
  },

  data() {
    return {
      visible:false
    };
  },

  mounted() {
    
  },

  methods: {
    
  },
};
</script>

2.子组件

<template>

  <div class="abc" v-show='visible'>
    <h2>这是一个对话框</h2>
    <button @click="close">关闭</button>
    <div class="aaa" v-show='visible2'>
      <h3>确认要关闭吗?</h3>
      <button @click="confirm">确认</button>
      <button @click='cancel'>取消</button>
    </div>
  </div>
   
</template>

<script>
export default {
  name: 'Mydailog',
  data(){
    return {
      visible2:false
    }
  },
props:{
      visible:{
        type:Boolean,
      }
  },
 
 methods: {
    close(){
     this.visible2=true
    },
    confirm(){
      this.$emit("update:visible",false)
    },
    cancel(){
      this.visible2=false
    }
    }
        
}

</script>