問題描述:在某個頁面需打開一個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