2017-08-28 45 views
0

フォームに<q-modal>(Quasar Framework)を使用しています。 Addボタンをクリックすると、フォームがポップアップします。ここでは、Submitボタンをクリックした後、各フォームタグを検証しています。モーダルを閉じるには、送信ボタンに@click="$refs.maximizedModal.close()"を使用しています。Vue jsを使用して検証後にモーダルを閉じる方法は?

すべて正常です。バリデーションがtrueを返さない場合、またはバリデーションが満たされてモーダルが閉じられる必要がある場合は、モーダルを保持する必要があります。

Vue jsで条件付きサブミットを行う方法はありますか?

答えて

0

あなたは、フォームの提出と、それを使用し、このような何かのためのカスタム関数にする必要があります。

を....

methods{ 
    checkForm(e){ 
    if(VALIDATION_IS_TRUE){ 
     //Validation has passed, we submit the form OR close the modal 
     $refs.maximizedModal.close(); // Maybe this.$refs.maximizedModal.close() 
     e.target.submit(); 
    }else{ 
     //The form is not validated, do something to inform the user 
    } 
    } 
} 

との代わりに、送信ボタン用の@clickを使用してこれをフォーム要素に追加してください:

<form @submit.prevent='checkForm($event)'> 

これは役に立ちます。

+0

$ refs.maximizedModal.close()とthis。$ refs.maximizedModal.close()の両方にエラーが発生しています。 $ refs.maximizedModalは関数ではありません。 –

+0

"this。$ refs.maximizedModal.close()"が関数ではない場合、maximizedModalオブジェクトに正しくアクセスしていない可能性があります。この場合、のように、現在のコンポーネントの中にコンポーネントがあるはずです。そのようなタグが見つからない場合は、あなたのようなエラーが発生します。最大化されたモーダルがそのコンポーネントの子でない場合、そのようにアクセスすることはできません。 @click = "$ refs.maximizedModal.close()"は、vuejsコンポーネント内のメソッドの中で "this。$ refs.maximizedModal.close()"を定義するのと同じです。 –

関連する問題