Skip to content

自动关闭

提示:

默认情况下,会在弹窗左下角(前提:未隐藏尾部区域且未自定义尾部)显示倒计时提示语,也可利用拦截器功能自定义提示语的位置和形式。

默认

vue
<template>
    <button @click="open">打开</button>

    <TinyLayer 
        v-model="visible" 
        title="弹窗标题" 
        :auto-close="5000"
    >
        <div>这里是弹窗内容...</div>
        <div>这里是弹窗内容...</div>
        <div>这里是弹窗内容...</div>
    </TinyLayer>
</template>

<script setup>
    import { ref } from "vue";

    const visible = ref( false );
    const open = () => {
        visible.value = true;
    }
</script>

自定义提示文字

vue
<template>
    <button @click="open">打开</button>

    <TinyLayer 
        v-model="visible" 
        title="弹窗标题" 
        auto-close-text="秒钟后将自动关闭弹窗"
        :auto-close="5000"
    >
        <div>这里是弹窗内容...</div>
        <div>这里是弹窗内容...</div>
        <div>这里是弹窗内容...</div>
    </TinyLayer>
</template>

<script setup>
    import { ref } from "vue";

    const visible = ref( false );
    const open = () => {
        visible.value = true;
    }
</script>

拦截器

提示:

有时需要在自动关闭倒计时结束时给出提示,然后让用户选择是否关闭弹窗,这个功能可以通过 auto-close-intercept 属性和 @auto-close-intercept 事件来实现,即可在倒计时结束时拦截关闭操作。

vue
<template>
    <button @click="open">打开</button>

    <TinyLayer 
        v-model="visible" 
        title="弹窗标题" 
        :auto-close="5000"
        auto-close-intercept
        @auto-close-intercept="intercept"
    >
        <div>这里是弹窗内容...</div>
        <div>这里是弹窗内容...</div>
        <div>这里是弹窗内容...</div>
    </TinyLayer>
</template>

<script setup>
    import { ref } from "vue";

    const visible = ref( false );
    const open = () => {
        visible.value = true;
    }
    const intercept = () => {
        $tinylayer.alert.info( {
            title: "提示",
            content: "点击确定按钮关闭弹窗。",
            maskBackground: "rgba(0, 0, 0, .3)",
            ok: {
                callback: () => {
                    visible.value = false;
                }
            }
        } );
    }
</script>

自定义提示形式

提示:

默认配置下,开启自动关闭功能会在弹窗左下角显示倒计时提示语,如果开发者不喜欢这种提示形式,可设置 :auto-close-visible="false" 来关闭默认的提示语,然后利用 @auto-close-countdown 事件来自行设置提示形式。

vue
<template>
    <button @click="open">打开</button>

    <TinyLayer 
        v-model="visible" 
        title="弹窗标题" 
        :ok-text="okText"
        :auto-close="5000"
        :auto-close-visible="false" 
        @auto-close-countdown="countdown"
    >
        <div>这里是弹窗内容...</div>
        <div>这里是弹窗内容...</div>
        <div>这里是弹窗内容...</div>
    </TinyLayer>
</template>

<script setup>
    import { ref } from "vue";

	const text = "确定(5)";
	const okText = ref( text );
	const visible = ref( false );
	const open = () => {
		okText.value = text;
		visible.value = true;
	}
	const countdown = ( ms, s ) => {
		okText.value = `确定(${ s })`;
	}
</script>

Released under the MIT License.