前提・実現したいこと
Vue.jsでアプリを作成中
UIフレームワーク「Vuetify」を利用中
登録ボタンを押すと同時に、ダイアログ(v-dialog)が閉じるメソッドを作成したい。
発生している問題・エラーメッセージ
エラーメッセージ
app.js:38414 TypeError: Cannot set properties of undefined (setting 'value')
閉じれません。
該当のソースコード
js
1<template> 2 <div> 3 <v-row justify="start"> 4 <v-col cols="auto"> 5 <v-dialog max-width="90%" scrollable> 6 <template v-slot:default="dialog"> 7 <v-card class="dialogBg"> 8 <v-toolbar color="primary" dark dense>記録入力 9 <v-spacer></v-spacer> 10 <v-btn icon @click="dialog.value = false"> 11 <v-icon>mdi-window-close</v-icon> 12 </v-btn> 13 </v-toolbar> 14 <v-card-text> 15 <RecordForm ref="RecordForm"></RecordForm> 16 </v-card-text> 17 <v-card-actions class="end"> 18 <v-btn text @click="submit" color="primary">登録</v-btn> 19 <v-btn text @click="dialog.value = false" color="primary">閉じる</v-btn> 20 </v-card-actions> 21 </v-card> 22 </template> 23 </v-dialog> 24 </v-col> 25</template> 26<script> 27 import RecordForm from '../layout/RecordForm' 28 29 export default { 30 components: { 31 RecordForm, 32 }, 33 methods: { 34 closeDialog(){ 35 this.dialog.value=false 36 }, 37 38 submit() {//登録ボタンが押されたときに発動するメソッド 39 this.$refs.RecordForm.post()//別ファイルのメソッドを呼び出し 40 this.closeDialog()//ダイアログを閉じるメソッドを呼び出し 41 }, 42 } 43</script>
試したこと
閉じるボタンからは閉じれます。
js
1<v-btn text @click="dialog.value = false" color="primary">閉じる</v-btn>
そのため、
dialog.value
の値をfalseにできれば閉じれると思っていました。
エラー内容からするに、dialogにvalueなんてプロパティはない!
といわれているようなので、
js
1data() { 2 return { 3 dialog:{value:null}, 4 }
と空のオブジェクトを定義してみたりもしましたが、エラーが出なくなるだけでダイアログは閉じませんでした。
他には、
閉じるボタンの@clickを編集して
js
1<v-btn text @click="closeDialog" color="primary">閉じる</v-btn> 2
としてみた場合も、エラーが出てNG。
どうやらメソッド化した時点でうまく動作しなくなってしまうようです。
dialog.valueという変数(プロパティ?)がVuetify側に握られていてどうにもならなさそうな感じもしています。
何かいい方法はないでしょうか。
たとえば、キーボードのESCキーを押したときにもダイアログは閉じます。
「ESCキーが押下されたことにする」のようなVue.jsの書き方があれば、それでも結構です。
補足情報(FW/ツールのバージョンなど)
Vue2
vuetify@2.6.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/05 02:46
2022/02/06 08:23