teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2021/09/29 12:35

投稿

shiketa
shiketa

スコア4133

answer CHANGED
@@ -3,4 +3,79 @@
3
3
  `<v-dialog ...>`を使う、という選択肢はありませんか。
4
4
 
5
5
  * [https://vuetifyjs.com/ja/components/dialogs/](https://vuetifyjs.com/ja/components/dialogs/)
6
- * [https://vuetifyjs.com/ja/api/v-dialog/](https://vuetifyjs.com/ja/api/v-dialog/)
6
+ * [https://vuetifyjs.com/ja/api/v-dialog/](https://vuetifyjs.com/ja/api/v-dialog/)
7
+
8
+ ----
9
+
10
+ 追記。
11
+
12
+ ----
13
+
14
+
15
+ >> >vue側の条件分岐でtrueになったとき」の部分は提示されていない、という認識でいいですね。
16
+
17
+ > →はい、認識あっております。
18
+
19
+ >> >vue側の条件分岐でtrueになったとき」が``if (hogehoge) { ... }`だとします。そうなのであれば、`if (hogehoge) { ... ; this.showContent = true; ...}`とすればいいのでは?
20
+
21
+ > →すみません、私の理解が乏しいのでコードに書いてみました。下記の考えであってますでしょうか?m(_ _)m
22
+
23
+ [どこかのHelloWorld](https://qiita.com/hyaroy_pg/items/ecb60ee3971e059507bd)を改変して、想像の範囲でやりたいであろうことを書いてみました。hoge.htmlに保存すれば動くはずです。
24
+
25
+ > メソッドに条件分岐をつけているのですが
26
+
27
+ 「メソッド」はdoChange()、「分岐条件」は`this.inputNumber % 2 == 0`と読み替えてください。
28
+
29
+ ```html
30
+ <!DOCTYPE html>
31
+ <html lang="ja">
32
+
33
+ <head>
34
+ <meta charset="UTF-8">
35
+ <script src="https://cdn.jsdelivr.net/npm/vue"></script>
36
+ <title>Title</title>
37
+ </head>
38
+
39
+ <body>
40
+ <div id="app">
41
+ <div> testVal: {{ testVal }} </div>
42
+ <div> inputNumber: <input type="number" v-model="inputNumber" @change="doChange"> / {{inputNumber}} </div>
43
+ <div>showContent: {{showContent}}</div>
44
+ <div>history: {{history}}</div>
45
+ <div id="modal">
46
+ <button v-on:click="openModal">Click</button>
47
+ <div class="overlay" v-show="showContent" v-on:click="closeModal">
48
+ <div class="content">
49
+ <p>これがモーダルウィンドウです。</p>
50
+ <button v-on:click="closeModal">close</button>
51
+ </div>
52
+ </div>
53
+ </div>
54
+ </div>
55
+ </body>
56
+ <script>
57
+ const app = new Vue({
58
+ el: '#app',
59
+ data: {
60
+ testVal: 'Hello World!',
61
+ showContent: false,
62
+ inputNumber: 0,
63
+ history: []
64
+ },
65
+ methods: {
66
+ openModal() {
67
+ this.showContent = true
68
+ },
69
+ closeModal() {
70
+ this.showContent = false
71
+ },
72
+ doChange() {
73
+ this.showContent = this.inputNumber % 2 == 0
74
+ this.history.push(this.inputNumber, this.showContent)
75
+ }
76
+ }
77
+ });
78
+ </script>
79
+
80
+ </html>
81
+ ```