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

質問編集履歴

2

削除

2019/07/22 14:37

投稿

frtne
frtne

スコア29

title CHANGED
File without changes
body CHANGED
@@ -112,7 +112,6 @@
112
112
  displaySelectM: '',
113
113
  areaMap: { kanto: '関東', kansai: '関西' },
114
114
  prefectureMap: { tokyo: '東京', saitama: '埼玉', kanagawa: '神奈川' },
115
- mostMap: { tokyo: '東京', saitama: '埼玉', kanagawa: '神奈川' },
116
115
    }
117
116
   },
118
117
  methods: {

1

追記

2019/07/22 14:37

投稿

frtne
frtne

スコア29

title CHANGED
File without changes
body CHANGED
@@ -56,4 +56,82 @@
56
56
  },
57
57
  ```
58
58
 
59
+
60
+ <======================================▼7/22追記==========================================>
61
+ ※zackey2さんありがとうございました!
62
+
63
+ ### 新たな課題
64
+ ①確定押下時、["複数選択","複数選択"]と、配列のまま文字列が表示されるため、
65
+  []"を抜いて表示させたい(正規表現で試してみるも、TypeError: this.selected.replace is not a function)
66
+ ②関東、東京などのデータは、サーバーサイドからAPIが返ってくることを想定していますが、今のままの実装でも流用可能でしょうか?
67
+  areaMap: { kanto: '関東', kansai: '関西' },
68
+ prefectureMap: { tokyo: '東京', saitama: '埼玉', kanagawa: '神奈川' },
69
+  上記のあたりは、裏側のデータを持ってきつつ同じだけのデータ量をフロント側で用意してあげなければいけないため難しいのではないか
70
+  と感じている。
71
+
72
+ ```vue
73
+ <div>
74
+ <p>{{ displaySelectR}}</p>
75
+ <p>{{ displaySelectC }}</p>
76
+ <p>{{ displaySelectM }}</p>
77
+ </div>
78
+
79
+ <ul>
80
+ <li @click="onSelectR('kanto')">関東</li>
81
+ <ul v-show="selectR === 'kanto'">
82
+ <li @click="onSelectC('tokyo')">東京</li>
83
+ <div v-show="selectC === 'tokyo'">
84
+ <input type="checkbox" v-model="selected" value="複数選択1">複数選択
85
+ <input type="checkbox" v-model="selected" value="複数選択2">複数選択
86
+ <input type="checkbox" v-model="selected" value="複数選択3">複数選択
87
+ </div>
88
+ <li @click="onSelectC('kanagawa')">神奈川</li>
89
+ <div v-show="selectC === 'kanagawa'">
90
+ <input type="checkbox">複数選択
91
+ <input type="checkbox">複数選択
92
+ <input type="checkbox">複数選択
93
+ </div>
94
+ <li @click="onSelectC('saitama')">埼玉</li>
95
+ <div v-show="selectC === 'saitama'">
96
+ <input type="checkbox">複数選択
97
+ <input type="checkbox">複数選択
98
+ <input type="checkbox">複数選択
99
+ </div>
100
+ </ul>
101
+ </ul>
102
+ <button @click="confilm">確定</button>
103
+
104
+ ---以下script
105
+
106
+ data() {
107
+ return {
108
+ selectR: '',
109
+ selectC: '',
110
+ displaySelectR: '',
111
+ displaySelectC: '',
112
+ displaySelectM: '',
113
+ areaMap: { kanto: '関東', kansai: '関西' },
114
+ prefectureMap: { tokyo: '東京', saitama: '埼玉', kanagawa: '神奈川' },
115
+ mostMap: { tokyo: '東京', saitama: '埼玉', kanagawa: '神奈川' },
116
+   }
117
+  },
118
+ methods: {
119
+ onSelectR(e) {
120
+ this.selectR = e;
121
+ },
122
+ onSelectC(e) {
123
+ this.selectC = e;
124
+ },
125
+ confilm() {
126
+ const selectedStr = this.selected.replace(/["[]]/g, '');
127
+ this.displaySelectR = this.areaMap[this.selectR];
128
+ this.displaySelectC = this.prefectureMap[this.selectC];
129
+ this.displaySelectM = selectedStr;
130
+ // 削除処理
131
+ this.selectR = '';
132
+ this.selectC = '';
133
+ this.selectM = '';
134
+ },
135
+ ```
136
+
59
137
  よろしくお願い致します。