回答編集履歴

2

元のコードをなるべくそのままに対応した

2020/03/12 21:13

投稿

popobot
popobot

スコア6586

test CHANGED
@@ -215,3 +215,181 @@
215
215
  * `<tbody>`内に`<p>`は置けないので移動した
216
216
 
217
217
  * 名古屋とFukuokaがこんがらがってた
218
+
219
+
220
+
221
+ ----
222
+
223
+
224
+
225
+ 追記 2020-3-13
226
+
227
+
228
+
229
+ なるべく元のコードをもとに修正してみました
230
+
231
+
232
+
233
+ * clickAllChecked で showX を更新する処理を追加
234
+
235
+ * facilitychkに関する処理は不要だと思うので削除
236
+
237
+ * clickChecked で AllChecked を更新する処理を追加
238
+
239
+
240
+
241
+
242
+
243
+ ```
244
+
245
+ var app = new Vue({
246
+
247
+ el: '#app',
248
+
249
+ data: {
250
+
251
+ dataList : [
252
+
253
+ { id: 121, city: "Osaka" },
254
+
255
+ { id: 123, city: "Fukuoka" },
256
+
257
+ { id: 425, city: "Osaka" },
258
+
259
+ { id: 645, city: "Tokyo" },
260
+
261
+ { id: 326, city: "Osaka" },
262
+
263
+ { id: 876, city: "Tokyo" },
264
+
265
+ { id: 456, city: "Osaka" },
266
+
267
+ { id: 335, city: "Osaka" },
268
+
269
+ { id: 471, city: "Tokyo" },
270
+
271
+ { id: 345, city: "Osaka" },
272
+
273
+ { id: 857, city: "Fukuoka" },
274
+
275
+ { id: 455, city: "Osaka" },
276
+
277
+ { id: 997, city: "Osaka" },
278
+
279
+ { id: 121, city: "Tokyo" },
280
+
281
+ { id: 115, city: "Osaka" },
282
+
283
+ { id: 668, city: "Fukuoka" }
284
+
285
+ ],
286
+
287
+ AllChecked: 0,
288
+
289
+ show1: false,
290
+
291
+ show2: false,
292
+
293
+ show3: false,
294
+
295
+ },
296
+
297
+ methods: { // 全てチェック機能
298
+
299
+ clickAllChecked: function (event) {
300
+
301
+ var actionFlg;
302
+
303
+ if (event.target.checked == true) {
304
+
305
+ actionFlg = true;
306
+
307
+ } else {
308
+
309
+ actionFlg = false;
310
+
311
+ }
312
+
313
+ // 各チェックを全てチェックに合わせて変更
314
+
315
+ this.show1 = actionFlg;
316
+
317
+ this.show2 = actionFlg;
318
+
319
+ this.show3 = actionFlg;
320
+
321
+ },
322
+
323
+ clickChecked: function(event) {
324
+
325
+ if(event.target.checked == false){
326
+
327
+ this.AllChecked = 0;
328
+
329
+ }
330
+
331
+ // すべてがチェックされたら、全てチェックをチェックする
332
+
333
+ if (this.show1 && this.show2 && this.show3) {
334
+
335
+ this.AllChecked = 1;
336
+
337
+ }
338
+
339
+ }
340
+
341
+ },
342
+
343
+
344
+
345
+ computed: {
346
+
347
+
348
+
349
+ filteredList: function() { // 絞り込み機能
350
+
351
+ var newList = [];
352
+
353
+ for (var i=0; i<this.dataList.length; i++) {
354
+
355
+ var isShow = true;
356
+
357
+ if (!this.show1 && this.dataList[i].city == "Tokyo") {
358
+
359
+ isShow = false;
360
+
361
+ }
362
+
363
+ if (!this.show2 && this.dataList[i].city == "Osaka") {
364
+
365
+ isShow = false;
366
+
367
+ }
368
+
369
+ if (!this.show3 && this.dataList[i].city == "Fukuoka") {
370
+
371
+ isShow = false;
372
+
373
+ }
374
+
375
+ if (isShow) {
376
+
377
+ newList.push(this.dataList[i]);
378
+
379
+ }
380
+
381
+ }
382
+
383
+ return newList;
384
+
385
+ }
386
+
387
+ }
388
+
389
+ });
390
+
391
+ ```
392
+
393
+
394
+
395
+ [JSFiddle](https://jsfiddle.net/popobot/826rzmg0/)もあります

1

補足

2020/03/12 21:13

投稿

popobot
popobot

スコア6586

test CHANGED
@@ -201,3 +201,17 @@
201
201
 
202
202
 
203
203
  [JSFiddle](https://jsfiddle.net/popobot/xa54pswy/32/)に動くサンプルもあります
204
+
205
+
206
+
207
+ ----
208
+
209
+
210
+
211
+ 以下の点もおかしかったので直しました
212
+
213
+
214
+
215
+ * `<tbody>`内に`<p>`は置けないので移動した
216
+
217
+ * 名古屋とFukuokaがこんがらがってた