iview中Modal对话框点击确定后会自动关闭窗口

本文介绍了一个在iView框架中使用Modal对话框并结合表单验证的具体实现方案。主要解决的问题是在表单验证未通过时阻止Modal对话框关闭的情况,并提供了一种可行的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在某个页面需打开一个Modal,然后这个Modal里有一个Form表单,点击确定时我需要先校验表单数据是否输入正确,不确定则不希望关闭窗口;(问题是:只要点击确认 loading :false 情况下iview默认就把窗口就关闭了)

API上也只是说了通过loading状态来手动关闭对话框,但是在需要验证form表单,表单验证通过再关闭modal 这种环境下,似乎并不实用,当首次表单验证不通过时,若设置 loading = true,此时的确定按钮一直为加载状态,后面那个确定按钮根本无法点击,

后来在网上找到了解决办法,亲测可以用,关键一步操作  this.$nextTick(() => { this.loading = true; }); 在这里记录下来:

<template>
    <div>
        <Button type="primary" @click="modal1 = true">显示对话框</Button>
        <Modal
            v-model="modal1"
            title="Modal"
            @on-ok="ok"
            :loading="loading">
            <p>对话框内容</p>
            <p>对话框内容</p>
            <p>对话框内容</p>
        </Modal>
    </div>
</template>
<script>
    export default {
        data () {
            return {
                modal1: false,
                loading: true
            }
        },
        methods: {
            ok () {
                this.$Message.info('异步验证数据');
                setTimeout(() => {
                    this.loading = false;
                    this.$nextTick(() => {
                        this.loading = true;
                    });
                }, 1000);
            }
        }
    }
</script>
测试之后还是有一些小问题,不是功能上问题,表单验证通过后,点击确认按钮,确认按钮的加载状态会闪现一下,然后看到modal关闭,后续再找找有没有更好的办法
原文链接: https://github.com/iview/iview/issues/597
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值