回答編集履歴

9

 

2022/07/29 22:34

投稿

退会済みユーザー
test CHANGED
@@ -94,7 +94,7 @@
94
94
  --------------------
95
95
  複数の条件でselectとtextを使い分ける方法として [v-else-if](https://jp.vuejs.org/v2/guide/conditional.html#v-else-if) を使って下記のようにするやり方があります。
96
96
 
97
- たとえば、「性別」に加えて、「会員」という項目をプルダウンにしたいときは、下記のようになります。
97
+ たとえば、「性別」に加えて、「会員タイプ」という項目をプルダウンにしたいときは、下記のようになります。
98
98
  ```html
99
99
  <template v-for="(key, index) in keys">
100
100
  <div v-if="key!=='名前フリガナ'">
@@ -109,7 +109,7 @@
109
109
  </select>
110
110
  </div>
111
111
  </div>
112
- <div v-else-if="key === '会員'">
112
+ <div v-else-if="key === '会員タイプ'">
113
113
  <div class="select">
114
114
  <select v-model="conditions[index]">
115
115
  <option></option>

8

 

2022/07/28 14:25

投稿

退会済みユーザー
test CHANGED
@@ -94,7 +94,7 @@
94
94
  --------------------
95
95
  複数の条件でselectとtextを使い分ける方法として [v-else-if](https://jp.vuejs.org/v2/guide/conditional.html#v-else-if) を使って下記のようにするやり方があります。
96
96
 
97
- たとえば、「性別」に加えて、「会員」という項目をプルダウンにしたいとき
97
+ たとえば、「性別」に加えて、「会員」という項目をプルダウンにしたいときは、下記のようになります。
98
98
  ```html
99
99
  <template v-for="(key, index) in keys">
100
100
  <div v-if="key!=='名前フリガナ'">

7

追記

2022/07/28 14:16

投稿

退会済みユーザー
test CHANGED
@@ -90,3 +90,39 @@
90
90
  </div>
91
91
  </template>
92
92
  ```
93
+
94
+ --------------------
95
+ 複数の条件でselectとtextを使い分ける方法として [v-else-if](https://jp.vuejs.org/v2/guide/conditional.html#v-else-if) を使って下記のようにするやり方があります。
96
+
97
+ たとえば、「性別」に加えて、「会員」という項目をプルダウンにしたいとき
98
+ ```html
99
+ <template v-for="(key, index) in keys">
100
+ <div v-if="key!=='名前フリガナ'">
101
+ <div style="margin-bottom: 1em;">
102
+ <label class="label is-small">{{ key }}</label>
103
+ <div v-if="key==='性別'">
104
+ <div class="select">
105
+ <select v-model="conditions[index]">
106
+ <option></option>
107
+ <option>男</option>
108
+ <option>女</option>
109
+ </select>
110
+ </div>
111
+ </div>
112
+ <div v-else-if="key === '会員'">
113
+ <div class="select">
114
+ <select v-model="conditions[index]">
115
+ <option></option>
116
+ <option>A</option>
117
+ <option>B</option>
118
+ <option>C</option>
119
+ </select>
120
+ </div>
121
+ </div>
122
+ <div v-else>
123
+ <input v-model="conditions[index]" type="text" class="input is-small">
124
+ </div>
125
+ </div>
126
+ </div>
127
+ </template>
128
+ ```

6

 

2022/07/27 15:06

投稿

退会済みユーザー
test CHANGED
@@ -16,13 +16,13 @@
16
16
 
17
17
  > ①右側のフィルタのフリーテキスト以外に、プルダウンでの選択したい
18
18
  > 例)「性別」カラムにあらかじめ「男」「女」をプルダウンで表示 など
19
- プルダウンはselectタグを使用します。
19
+ プルダウンで表示するにselect タグを使用します。
20
- 質問のコードで使われているCSSフレームワークの bulma に select クラスが用意されているのでこれを使えばデザインを統一できそうです。
20
+ 質問のコードで使われている CSS フレームワークの bulma には「selectクラスが用意されているのでこれを使えばデザインを統一できそうです。
21
21
  https://bulma.io/documentation/form/select/
22
22
 
23
- 「性別」ときプルダウンにしたいので、v-if を使ってみましょう。
23
+ 内容によるタグ切り替え、v-if を使ってみましょう。
24
24
  https://jp.vuejs.org/v2/guide/conditional.html
25
- keyが「性別」の時に select、それ以外の時はtextにすればよいでしょう。
25
+ たとえば「性別」のときにプルダウンにしたいのであれば、key が「性別」の時に select、それ以外の時は text にすればよいでしょう。
26
26
 
27
27
  ```html
28
28
  <div v-if="key==='性別'">

5

  

2022/07/27 14:57

投稿

退会済みユーザー
test CHANGED
@@ -28,9 +28,9 @@
28
28
  <div v-if="key==='性別'">
29
29
  <div class="select">
30
30
  <select v-model="conditions[index]">
31
+ <option></option>
31
32
  <option>男</option>
32
33
  <option>女</option>
33
- <option>---</option>
34
34
  </select>
35
35
  </div>
36
36
  </div>
@@ -77,9 +77,9 @@
77
77
  <div v-if="key==='性別'">
78
78
  <div class="select">
79
79
  <select v-model="conditions[index]">
80
+ <option></option>
80
81
  <option>男</option>
81
82
  <option>女</option>
82
- <option>ー</option>
83
83
  </select>
84
84
  </div>
85
85
  </div>

4

修正

2022/07/27 14:55

投稿

退会済みユーザー
test CHANGED
@@ -7,7 +7,7 @@
7
7
  record は1次元の配列なので、record[i].includes とすると、includes 関数がないというエラーになり、フィルタがうまく機能しません。
8
8
  ここは
9
9
  ```
10
- if ( this.conditions[i] && !record.includes(this.conditions[i]) ) return false;
10
+ if ( this.conditions[i] && record[i] !== this.conditions[i]) return false;
11
11
 
12
12
  ```
13
13
  とします。

3

 

2022/07/27 14:40

投稿

退会済みユーザー
test CHANGED
@@ -43,8 +43,8 @@
43
43
  > 例)「生年月日」は右の一覧には表示するが、左のフィルタには不要 など
44
44
 
45
45
  単純に、左のフィルタ項目を表示するところを操作して、元データを限定すればよいでしょう。
46
- フィルタ項目は key という配列で管理されています。
46
+ フィルタ項目は keys という配列で管理されています。
47
- keys 配列を、HTMLで表示しているのはここの部分です
47
+ keys 配列の中身を、HTMLで表示しているのはここの部分です
48
48
  ```html
49
49
  <template v-for="(key, index) in keys">
50
50
  <div style="margin-bottom: 1em;">

2

 

2022/07/27 14:38

投稿

退会済みユーザー
test CHANGED
@@ -60,11 +60,11 @@
60
60
  ```html
61
61
  <template v-for="(key, index) in keys">
62
62
  <div v-if="key !== '名前フリガナ'">
63
- <div style="margin-bottom: 1em;">
63
+ <div style="margin-bottom: 1em;">
64
- <label class="label is-small">{{ key }}</label>
64
+ <label class="label is-small">{{ key }}</label>
65
- <input v-model="conditions[index]" type="text" class="input is-small">
65
+ <input v-model="conditions[index]" type="text" class="input is-small">
66
+ </div>
66
67
  </div>
67
- </div>
68
68
  </template>
69
69
  ```
70
70
 

1

 

2022/07/27 14:37

投稿

退会済みユーザー
test CHANGED
@@ -4,7 +4,7 @@
4
4
  if ( this.conditions[i] && !record[i].includes(this.conditions[i]) ) return false;
5
5
 
6
6
  ```
7
- record は1次元の配列なので、record[i].includesと関数がないため、フィルタがうまく機能しません。
7
+ record は1次元の配列なので、record[i].includes すると、includes 関数がないというエラーになり、フィルタがうまく機能しません。
8
8
  ここは
9
9
  ```
10
10
  if ( this.conditions[i] && !record.includes(this.conditions[i]) ) return false;