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

溫馨提示×

溫馨提示×

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

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

vue3+element-plus?Dialog對話框的使用與setup寫法是什么

發布時間:2023-04-24 16:31:51 來源:億速云 閱讀:150 作者:iii 欄目:開發技術

這篇文章主要介紹“vue3+element-plus Dialog對話框的使用與setup寫法是什么”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“vue3+element-plus Dialog對話框的使用與setup寫法是什么”文章能幫助大家解決問題。

一. 傳統寫法不使用setup語法糖

方式一:通過v-model的方式實現子組件的顯示與隱藏

父組件的內容

<template>
  <div>
    <el-button @click="open">打開</el-button>
    <Child v-model:visible="flag" ></Child>
  </div>
</template>

<script>
  import { ref, watch } from 'vue'
  import Child from "../components/Child.vue"

  export default {
    components: {
      Child
    },

    setup() {
      const flag = ref(false)

      const open = () => {
        flag.value = true
      }
      
      watch(() => flag.value , (val) => {
        console.log("監聽flag值得變化:", val)
      })

      return {
        flag,
        open
      }
    }
  }
</script>

子組件內容

<template>
  <div class="hello">
    <el-dialog title="提示" v-model="dialogVisble" width="30%" :before-close="close">
      <span>這是一段信息</span>
      <template #footer>
        <span class="dialog-footer">
          <el-button @click="close">取 消</el-button>
          <el-button type="primary" @click="confirm">確 定</el-button>
        </span>
      </template>
    </el-dialog>
  </div>
</template>

<script>
  import { ref, watch } from 'vue'

  export default {
    props: {
      visible: {
        type: Boolean,
        default: false
      }
    },

    setup(props, ctx) {

      const dialogVisble = ref(false)

      const close = () => {
        ctx.emit("update:visible", false);
      };

      const confirm = () => {
        console.log('你點擊了確定按鈕')
        ctx.emit("update:visible", false);
      }

      watch(() => props.visible, (val) => {
        console.log(props.visible, val);
        dialogVisble.value = val
      });

      return {
        dialogVisble,
        confirm,
        close
      }
    }
  }
</script>

方式二:通過為元素綁定ref的方式實現子組件的顯示與隱藏

父組件的內容

<template>
  <div>
    <el-button @click="open">打開</el-button>
    <Child ref="visibleDialog"></Child>
  </div>
</template>

<script>
  import { ref } from 'vue'
  import Child from "../components/Child.vue"

  export default {
    components: {
      Child
    },

    setup() {
      const visibleDialog = ref(null)

      const open = () => {
        visibleDialog.value.dialogVisble = true
      }

      return {
        visibleDialog,
        open
      }
    }
  }
</script>

子組件內容

<template>
  <div class="hello">
    <el-dialog title="提示" v-model="dialogVisble" width="30%" :before-close="close">
      <span>這是一段信息</span>
      <template #footer>
        <span class="dialog-footer">
          <el-button @click="close">取 消</el-button>
          <el-button type="primary" @click="confirm">確 定</el-button>
        </span>
      </template>
    </el-dialog>
  </div>
</template>

<script>
  import { ref } from 'vue'

  export default {

    setup(props, ctx) {

      const dialogVisble = ref(false)

      const confirm = () => {
        console.log('你點擊了確定按鈕')
        dialogVisble.value = false
      }

      const close = () => {
        dialogVisble.value = false
      }

      return {
        dialogVisble,
        confirm,
        close
      }
    }
  }
</script>

2. setup語法糖寫法 父組件

<template>
  <Child :user="user" ref="visiableDialog"></Child>
  <el-button type="primary" @click="openDialog">打開彈窗</el-button>
</template>

<script setup>
import { reactive, ref } from 'vue'
import Child from "../components/childComponents.vue"

const visiableDialog = ref(null)

const user = reactive({
  name: '張三',
  age: 20
})

function openDialog() {
  visiableDialog.value.dialogVisble = true
  console.log(visiableDialog.value.dialogVisble);
}
</script>

子組件

<template>
  <div class="hello">{{ `${props.user.name}在學習VUE3` }}</div>
  <el-dialog title="提示" v-model="dialogVisble" width="30%">
    <span>這是一段信息</span>
    <template #footer>
      <span class="dialog-footer">
        <el-button @click="close">取 消</el-button>
        <el-button type="primary" @click="confirm">確 定</el-button>
      </span>
    </template>
  </el-dialog>
</template>

<script setup>
import { ref } from 'vue';
import { ElMessageBox } from 'element-plus'

// 定義控制彈窗顯隱的變量
const dialogVisble = ref(false)

// 接受父組件傳過來的值
// const props = defineProps({
//   user: {
//     type: Object,
//     default: {}
//   }
// })
// 或者
const props = defineProps(['user'])

function confirm() {
  ElMessageBox.confirm('確定關閉嗎?').then(() => {
    console.log('你點擊了確定按鈕')
    dialogVisble.value = false
  }).catch(() => { })
}

function close() {
  dialogVisble.value = false
}

// 將變量暴露出來
defineExpose({
  dialogVisble
})
</script>

關于“vue3+element-plus Dialog對話框的使用與setup寫法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

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

AI

丹凤县| 台东县| 辽源市| 富民县| 唐河县| 江城| 思南县| 北流市| 阜新市| 固原市| 蒙阴县| 永定县| 绵竹市| 通辽市| 咸宁市| 江孜县| 台南县| 舒兰市| 莱阳市| 贵阳市| 庆阳市| 成安县| 原阳县| 泗水县| 舟山市| 南靖县| 徐汇区| 怀仁县| 海晏县| 萨迦县| 蒙阴县| 巴林右旗| 涞水县| 页游| 大埔区| 汉沽区| 江北区| 禹州市| 民乐县| 石台县| 芦山县|