modal 确定按钮loading问题

发布于 2022-09-05 23:24:52 字数 1164 浏览 19 评论 0

点击确定的时候验证表单。虽然在设置loading为true.但是验证之后隐藏不了loading按钮了。

clipboard.png

看到源码中是这么写的
`

        ok () {
            if (this.loading) {
                this.buttonLoading = true;

            } else {
                this.visible = false;
                this.$emit('input', false);
            }
            this.$emit('on-ok');
        },

`

虽然也看到 对loading的监听.

   loading: function loading(val) {
            if (!val) {
                this.buttonLoading = false;
            }
        },

但是这里你在使loading 为true的时候,以上的ok代码块内就没有loading效果,使modal直接关了。

这里的buttonloading不应该是外部可控制的?想修改源码不知道怎么操作.
求告知.

好吧。我在else的代码块里加入了

                      this.loading=false;
                        this.$Message.error('请检查表单是否输入正确!');
                        setTimeout(() => {
                            this.loading=true;
                        }, 100);

这样的逻辑用来规避以上说明的这种情况,但是这样真的是不大好。手速太快。仍然能把modal给点没。
还是期望给个可控制的属性

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

听不够的曲调 2022-09-12 23:24:52
 onOK: function () {
   let _this = this
    setTimeout(function () {
      _this.loading = false
      _this.$nextTick(() => {_this.loading = true;});
    }, 1000)
  }`
  

Issues

VUE官网对于$nextTick的介绍

东京女 2022-09-12 23:24:52

参考了很多答案,认为使用slot最合理
1、template代码片段:

       <Modal v-model="modal.visible" :mask-closable="false" :closable="false" title="部门类型">
            <div slot="footer">
                <Button type="text" size="large" @click="modalCancel">取消</Button>
                <Button type="primary" size="large" @click="modalOk">确定</Button>
            </div>
            <Form ref="vo" :model="dataMain.currentRow" :rules="dataMain.rules" :label-width="80">
                <FormItem label="部门类型" prop="type">
                    <Input v-model="dataMain.currentRow.type" placeholder="请输入..."></Input>
                </FormItem>
            </Form>
        </Modal>

2、methods代码片段:

        modalOk() {
            this.$refs['vo'].validate((valid) => {
                if (valid) {
                    this.save();
                    this.modal.visible = false;
                }
            });
        },
        modalCancel() {
            this.modal.visible = false;
            //清空form规则检查
            this.$refs['vo'].resetFields();
        },
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文