国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

詳解vue父子組件關(guān)于模態(tài)框狀態(tài)的綁定方案

2024-05-06 15:38:27
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

日常開發(fā)中經(jīng)常遇到的一個(gè)場(chǎng)景,父組件有很多操作,需要彈窗,例如:

<template>  <div class="page-xxx">    //點(diǎn)擊打開新增彈窗    <button>新增</button>    //點(diǎn)擊打開編輯彈窗    <button>編輯</button>    //點(diǎn)擊打開詳情彈窗    <button>詳情</button>    <Add :showAdd="false"></Add>    <Edit :showEdit="false"></Edit>    <Detail :showDetail="false"></Detail>  </div></template>

子組件:

<div class="page-add">  <el-dialog :visible="dialogVisible" @close="handleClose"></el-dialog></div><script>export default {  data() {    return {      dialogVisible: false,    }  },  methods: {    handleClose(val) {      this.dialogVisible= false    },  },}</script>

如何實(shí)現(xiàn)子組件和父組件模態(tài)框狀態(tài)的同步

方案一:使用.sync 修飾符

父組件:

<template>  <div class="page-xxx">    //點(diǎn)擊打開新增彈窗    <button @click="show = true">新增</button>    <Add :show.sync="show"></Add>  </div></template>

子組件:

<div class="page-add">  <el-dialog:visible="dialogVisible" @close="handleClose"></el-dialog></div><script>export default {  props: {    show: {      type: Boolean    }  },  watch: {    show(value) {      this.dialogVisible= value    }  },  data() {    return {      dialogVisible: false,    }  },  methods: {    handleClose(val) {      this.$emit('update:show', false);    },  },}</script>

方案二:使用v-model

父組件:

<template>  <div class="page-xxx">    //點(diǎn)擊打開新增彈窗    <button @click="show = true">新增</button>    <Add v-model="show"></Add>  </div></template>

子組件:

<div class="page-add">  <el-dialog :visible="dialogVisible" @close="handleClose"></el-dialog></div><script>export default {  props: {    show: {      type: Boolean    }  },  watch: {    show(value) {      this.dialogVisible= value    }  },  data() {    return {      dialogVisible: false,    }  },  methods: {    handleClose(val) {      this.$emit('input', false)    },  },}</script>

computed OR watch ?

對(duì)于上面的兩種方案,子組件內(nèi)部還可以使用計(jì)算屬性的寫法

computedexport default {  props: {    show: {      type: Boolean    }  },  computed: {    dialogVisible: {      get() {        return this.show      },      set(value) {        return this.$emit('input', value)      },    },  },  methods: {    handleClose(val) {},  },}            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 浪卡子县| 吉安县| 文昌市| 高尔夫| 南雄市| 海安县| 洛南县| 龙江县| 浙江省| 沂水县| 鸡西市| 普兰店市| 饶平县| 临洮县| 和静县| 泰顺县| 白城市| 临城县| 玛多县| 天长市| 江北区| 元氏县| 攀枝花市| 莱西市| 红原县| 桃园县| 天祝| 承德县| 密云县| 大厂| 舟曲县| 万州区| 奉新县| 黑山县| 留坝县| 海宁市| 常宁市| 唐山市| 浦东新区| 弥渡县| 体育|