国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 山丹县| 大城县| 阿合奇县| 合作市| 余干县| 尼玛县| 宜兴市| 抚顺县| 二连浩特市| 临武县| 西盟| 文成县| 定南县| 呼伦贝尔市| 龙州县| 漳平市| 阳高县| 砚山县| 宁波市| 专栏| 郁南县| 环江| 长垣县| 大化| SHOW| 扎兰屯市| 麻江县| 和政县| 封开县| 美姑县| 巴南区| 陆丰市| 瑞昌市| 千阳县| 河源市| 汉中市| 石阡县| 托克逊县| 兴城市| 新密市| 咸宁市|