亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

兴安县| 南部县| 三江| 高台县| 乐山市| 汝南县| 阿拉善左旗| 古田县| 玛纳斯县| 蕉岭县| 澄江县| 公主岭市| 清水县| 东丽区| 上犹县| 两当县| 凤城市| 桐庐县| 浏阳市| 衡东县| 旺苍县| 贺州市| 禹州市| 合川市| 洞口县| 卢湾区| 涿州市| 察隅县| 林芝县| 新野县| 汾阳市| 洪洞县| 弥勒县| 德安县| 特克斯县| 文山县| 禹州市| 永清县| 康定县| 唐山市| 吉首市|