針對Vue專案中的彈跳窗,需要考慮到使用者可能在沒有回應的情況下會一直等待,這會使使用者感到不舒服。為了避免這種情況的發生,我們可以透過設定超時時間來自動關閉彈跳窗。
Vue專案中使用Element UI庫來實現彈窗,Element UI提供了ElDialog元件來建立彈跳窗。我們可以使用ElDialog元件的beforeClose屬性來實現超時關閉彈跳窗的功能。
在Vue專案中,在彈跳視窗建立時,我們可以透過ElDialog的beforeClose屬性來設定回調函數,在彈跳窗關閉之前會自動執行這個回呼函數。我們可以在回調函數中,設定一個定時器,並在規定的時間內點擊彈跳窗的「確認」或「取消」按鈕,以此來實現自動關閉彈跳窗。
下面是具體的實作方法:
1、在彈跳視窗的元件中,設定beforeClose 屬性,指定一個回呼函數:
<template> <el-dialog title="弹窗标题" :visible.sync="dialogVisible" :before-close="handleClose" > <span>弹窗内容</span> <span slot="footer" class="dialog-footer"> <el-button @click="closeDialog">取消</el-button> <el-button type="primary" @click="confirmDialog" >确认</el-button> </span> </el-dialog> </template> <script> export default { data () { return { dialogVisible: false, timer: null, // 定时器 timeout: 5000, // 超时时间,单位毫秒 } }, methods: { handleClose (done) { clearTimeout(this.timer) // 清除定时器 done() // 关闭弹窗 }, confirmDialog () { // 点击“确认”按钮时,手动关闭定时器,调用 done() 关闭弹窗 clearTimeout(this.timer) this.$emit('confirm') }, closeDialog () { this.$emit('close') } }, mounted: function () { // 定义一个 5 秒后自动关闭弹窗的定时器 this.timer = setTimeout(() => { this.$emit('close') }, this.timeout) }, } </script>
2、在彈跳視窗的在父元件中,監聽子元件的close 和confirm 事件,並修改彈跳窗的visible 屬性來控制彈跳窗的開啟和關閉。
<template> <div> <el-button type="primary" @click="showDialog">打开弹窗</el-button> <my-dialog :visible="dialogVisible" @close="dialogVisible = false" @confirm="dialogVisible = false" ></my-dialog> </div> </template> <script> import MyDialog from './MyDialog.vue' export default { components: { MyDialog }, data () { return { dialogVisible: false } }, methods: { showDialog () { this.dialogVisible = true }, }, } </script>
至此,在Vue專案中,在彈跳視窗元件中加入一些邏輯程式碼即可實現逾時關閉彈跳窗功能。
以上是vue怎麼實現超時關閉彈窗的詳細內容。更多資訊請關注PHP中文網其他相關文章!