質問編集履歴

1

idをデータに追加し、propsにも定義しました。

2018/05/22 08:20

投稿

ebiebifry
ebiebifry

スコア8

test CHANGED
File without changes
test CHANGED
@@ -297,3 +297,163 @@
297
297
  上記のthis.idに適当な数値を入力してみると動くのでidをいい感じに取得出来ればいいのだと思います。
298
298
 
299
299
  アドバイスのほどよろしくお願いいたします。
300
+
301
+
302
+
303
+ ### 追記
304
+
305
+ 追記・修正依頼の方にidという変数がdataにもpropsにも無いという指摘を受けたので下記のコードペンにて修正しました。
306
+
307
+ [https://codepen.io/ebifly/pen/RywWvg](https://codepen.io/ebifly/pen/RywWvg)
308
+
309
+ ```html
310
+
311
+ <div>
312
+
313
+ changeB
314
+
315
+ <name-list
316
+
317
+ :names="names"
318
+
319
+ <!--idのバインドを追加しました-->
320
+
321
+ :id="names.id"
322
+
323
+ @change-b="changeB"
324
+
325
+ ></name-list>
326
+
327
+ </div>
328
+
329
+ ```
330
+
331
+ ```js
332
+
333
+
334
+
335
+ Vue.component('name-list',{
336
+
337
+ template:'\
338
+
339
+ <select name="name-list" v-model="selected" @change="changeB">\
340
+
341
+ <option value="">該当なし</option>\
342
+
343
+ <option\
344
+
345
+ v-for="(name, index) in names"\
346
+
347
+ :value="name.title"\
348
+
349
+ >{{ name.title }}\
350
+
351
+ </option>\
352
+
353
+ </select>\
354
+
355
+ ',
356
+
357
+ //propsにidを追加しました
358
+
359
+ props: ['names', 'id'],
360
+
361
+ data: function data() {
362
+
363
+ return {
364
+
365
+ selected: '',
366
+
367
+ };
368
+
369
+ },
370
+
371
+ methods: {
372
+
373
+ changeB: function changeB(){
374
+
375
+ this.$emit('change-b', this.id)
376
+
377
+ }
378
+
379
+ }
380
+
381
+ });
382
+
383
+
384
+
385
+ var vm = new Vue({
386
+
387
+ el: '#main',
388
+
389
+ data: {
390
+
391
+ newNameText: '',
392
+
393
+ nextImg: 1,
394
+
395
+ nextId: 0,
396
+
397
+ names: []
398
+
399
+ },
400
+
401
+ methods: {
402
+
403
+ addNewName: function () {
404
+
405
+ if (this.newNameText !== '') {
406
+
407
+ if (this.nextImg > 10) {
408
+
409
+ this.nextImg = 1
410
+
411
+ }
412
+
413
+ this.names.push({
414
+
415
+ img: this.nextImg++,
416
+
417
+ //idのデータを追加しました。
418
+
419
+ id: this.nextId++,
420
+
421
+ title: this.newNameText,
422
+
423
+ status: 'a'
424
+
425
+ })
426
+
427
+ }
428
+
429
+ this.newNameText = ''
430
+
431
+ },
432
+
433
+ updateName: function updateName(id, name){
434
+
435
+ this.names[id].title = name
436
+
437
+ },
438
+
439
+ changeB: function changeB(id){
440
+
441
+ this.names[id].status = 'b'
442
+
443
+ }
444
+
445
+ }
446
+
447
+ })
448
+
449
+
450
+
451
+ vm.$mount('#main');
452
+
453
+ ```
454
+
455
+
456
+
457
+ この状態でも上手く動かないので、参照の仕方がおかしいのでしょうか?
458
+
459
+ アドバイスよろしくお願いしますm(_ _)m