中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue父子組件之模態框狀態綁定的示例分析

發布時間:2021-08-30 13:56:36 來源:億速云 閱讀:152 作者:小新 欄目:web開發

小編給大家分享一下vue父子組件之模態框狀態綁定的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

日常開發中經常遇到的一個場景,父組件有很多操作,需要彈窗,例如:

<template>
  <div class="page-xxx">
    //點擊打開新增彈窗
    <button>新增</button>
    //點擊打開編輯彈窗
    <button>編輯</button>
    //點擊打開詳情彈窗
    <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>

如何實現子組件和父組件模態框狀態的同步

方案一:使用.sync 修飾符

父組件:

<template>
  <div class="page-xxx">
    //點擊打開新增彈窗
    <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">
    //點擊打開新增彈窗
    <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 ?

對于上面的兩種方案,子組件內部還可以使用計算屬性的寫法

computed
export default {
  props: {
    show: {
      type: Boolean
    }
  },
  computed: {
    dialogVisible: {
      get() {
        return this.show
      },
      set(value) {
        return this.$emit('input', value)
      },
    },
  },
  methods: {
    handleClose(val) {},
  },
}

以上是“vue父子組件之模態框狀態綁定的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

疏附县| 弋阳县| 津市市| 金秀| 广西| 图片| 吕梁市| 卢湾区| 保定市| 青河县| 遂溪县| 砀山县| 永清县| 金溪县| 拉萨市| 江西省| 望谟县| 渭南市| 古交市| 长宁区| 南丰县| 夏津县| 河池市| 简阳市| 景洪市| 宁南县| 麻江县| 达孜县| 津市市| 宿迁市| 博湖县| 盐亭县| 嘉祥县| 奈曼旗| 花莲市| 民权县| 建昌县| 青海省| 苍山县| 高雄市| 富阳市|