91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

江川县| 白山市| 全州县| 三门县| 蓬安县| 镇康县| 固安县| 红河县| 石首市| 临夏县| 潍坊市| 万安县| 宁南县| 德惠市| 舞钢市| 平乐县| 色达县| 高雄县| 滦平县| 太湖县| 安徽省| 黄浦区| 响水县| 永修县| 南陵县| 凌源市| 阳曲县| 伊宁县| 雅安市| 上蔡县| 邵武市| 西城区| 盐亭县| 章丘市| 育儿| 平塘县| 吴江市| 镇巴县| 柘荣县| 鄂温| 新沂市|