質問編集履歴
1
変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -292,4 +292,156 @@
|
|
292
292
|
|
293
293
|
![vue](61900a2b1c704c7adab76ece8a504ba8.png)
|
294
294
|
|
295
|
+
|
296
|
+
|
297
|
+
変更1/20 17:37
|
298
|
+
|
299
|
+
---
|
300
|
+
|
301
|
+
```js
|
302
|
+
|
303
|
+
const vm = new Vue({
|
304
|
+
|
295
|
-
#
|
305
|
+
el: '#app',
|
306
|
+
|
307
|
+
data: {
|
308
|
+
|
309
|
+
counter: 0,
|
310
|
+
|
311
|
+
todoItms: [
|
312
|
+
|
313
|
+
{ title: '領収書を準備する', isChecked: true },
|
314
|
+
|
315
|
+
{ title: 'Vue.jsハンズオンの資料を作る', isChecked: true },
|
316
|
+
|
317
|
+
{ title: '参加者の人数を確認する', isChecked: false },
|
318
|
+
|
319
|
+
{ title: 'ピザを注文する', isChecked: false },
|
320
|
+
|
321
|
+
{ title: '参加費のお釣りを準備する', isChecked: false },
|
322
|
+
|
323
|
+
{ title: '会場設営をする', isChecked: false },
|
324
|
+
|
325
|
+
],
|
326
|
+
|
327
|
+
newItmTitle: '', //追加
|
328
|
+
|
329
|
+
danger_massage: ''
|
330
|
+
|
331
|
+
},
|
332
|
+
|
333
|
+
methods: {
|
334
|
+
|
335
|
+
add() {
|
336
|
+
|
337
|
+
this.counter++
|
338
|
+
|
339
|
+
this.saveCnt();
|
340
|
+
|
341
|
+
},
|
342
|
+
|
343
|
+
saveCnt() {
|
344
|
+
|
345
|
+
localStorage.setItem('counter', JSON.stringify(this.counter));
|
346
|
+
|
347
|
+
},
|
348
|
+
|
349
|
+
loadCnt() {
|
350
|
+
|
351
|
+
if(!localStorage.getItem('counter')) {
|
352
|
+
|
353
|
+
this.counter = 0;
|
354
|
+
|
355
|
+
} else {
|
356
|
+
|
357
|
+
this.counter = JSON.parse( localStorage.getItem('counter') );
|
358
|
+
|
359
|
+
}
|
360
|
+
|
361
|
+
},
|
362
|
+
|
363
|
+
|
364
|
+
|
365
|
+
addTodo(newItmTitle) {
|
366
|
+
|
367
|
+
this.danger_massage = '';
|
368
|
+
|
369
|
+
if (this.newItmTitle.length <= 20) {
|
370
|
+
|
371
|
+
|
372
|
+
|
373
|
+
this.todoItms.push({
|
374
|
+
|
375
|
+
title: this.newItmTitle,
|
376
|
+
|
377
|
+
isChecked: false
|
378
|
+
|
379
|
+
});
|
380
|
+
|
381
|
+
this.newItmTitle = '';
|
382
|
+
|
383
|
+
this.saveTodo(); //ブラウザに保存
|
384
|
+
|
385
|
+
} else {
|
386
|
+
|
387
|
+
this.danger_massage = '<span class="red">多いよー' + this.newItmTitle.length + '文字! 20文字以下でおねがい!</span>'
|
388
|
+
|
389
|
+
}
|
390
|
+
|
391
|
+
},
|
392
|
+
|
393
|
+
deleteTodo() {
|
394
|
+
|
395
|
+
this.todoItms = this.todoItms.filter( (todoItms) => {
|
396
|
+
|
397
|
+
return todoItms.isChecked === false;
|
398
|
+
|
399
|
+
});
|
400
|
+
|
401
|
+
this.saveTodo();
|
402
|
+
|
403
|
+
},
|
404
|
+
|
405
|
+
saveTodo() {
|
406
|
+
|
407
|
+
localStorage.setItem('todoItms', JSON.stringify(this.todoItms));
|
408
|
+
|
409
|
+
},
|
410
|
+
|
411
|
+
loadTodo() {
|
412
|
+
|
413
|
+
if (!localStorage.getItem('todoItms')) {
|
414
|
+
|
415
|
+
this.todoItms = vm.todoItms;
|
416
|
+
|
417
|
+
} else {
|
418
|
+
|
419
|
+
this.todoItms = JSON.parse( localStorage.getItem('todoItms') );
|
420
|
+
|
421
|
+
if( !this.todoItms ){
|
422
|
+
|
423
|
+
this.todoItms = [];
|
424
|
+
|
425
|
+
}
|
426
|
+
|
427
|
+
}
|
428
|
+
|
429
|
+
},
|
430
|
+
|
431
|
+
|
432
|
+
|
433
|
+
},
|
434
|
+
|
435
|
+
mounted() {
|
436
|
+
|
437
|
+
this.loadTodo();
|
438
|
+
|
439
|
+
this.loadCnt();
|
440
|
+
|
441
|
+
},
|
442
|
+
|
443
|
+
})
|
444
|
+
|
445
|
+
```
|
446
|
+
|
447
|
+
メソッド記法について、変更しました。
|