LoginSignup
3
0

More than 3 years have passed since last update.

【Vue.js】ディレクティブ "v-for"の謎(解決済)

Last updated at Posted at 2020-12-08

状況

Vue.jsの基礎学習中に色々コードを書き変えた際に偶然出会ったエラー

事象

・以下の"v-for"の基本型を作り、連続処理を学習中

index.html
<div id = "app">
  <ol>
    <li v-for="color in colors">{{ color }}</li>
  </ol>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<script src="main.js"></script>

main.js
var app = new Vue({
  el:"#app",
  data:{
    colors:["Red", "Green", "Blue"]
  }
})

結果:以下の通り正しく表示。よくあるv-forディレクトリの例文です。
Document - Google Chrome 2020_12_09 1_57_16 (3).png

・基本形ができたところで、構文の理解を深めるために色々とコードを変更していました。例えば、、、
<パターン1>

index.html
<div id = "app">
  <ol>
    <li v-for="c in colors">{{ c }}</li>  <!-- v-forの値"color"を"c"に変更、マスタッシュ構文内も"color"を"c"に変更 -->
  </ol>
</div>
main.js
//main.jsは上記と同じ

結果:正しく表示されます。
Document - Google Chrome 2020_12_09 1_57_16 (3).png

<パターン2>

index.html
<div id = "app">
  <ol>
    <li v-for="c in colors">{{ c }}</li>  <!-- v-forの値"color"を"c"に、マスタッシュ構文内も"cに、keyも"colors"を"co"に変更 -->
  </ol>
</div>
main.js
var app = new Vue({
  el:"#app",
  data:{
    co:["Red", "Green", "Blue"]  //プロパティ名"colors"を"co"に変更
  }
})

結果:雑な記述ですがこちらも正しく表示されました。
Document - Google Chrome 2020_12_09 1_57_16 (3).png

・ここからが本題です。
 ふとindex.htmlのv-for内の値"color"を"try"に変更
<パターン3>

index.html
<div id = "app">
  <ol>
    <li v-for="try in colors">{{ try }}</li>  <!-- v-forの値"color"を"c"に、key"colors"を"co"に変更 -->
  </ol>
</div>
main.js
// main.jsは基本形のまま
var app = new Vue({
  el:"#app",
  data:{
    colors:["Red", "Green", "Blue"]
  }
})

結果:表示されません。。。
  「ん?」となり、原因を調べることに。

原因

恐らく"try"を入力したことで、コード上では「JavaScript上のtry文を作ろう!」とスタンバイしていることが原因かと思われます。

try文では本来その後にcatchブロックやfinallyブロックが必要で、このブロックがないままRunしているので、エラーが発生しているのかと思います。
try...catch構文(MDN)

ふと頭に浮かんだ"try"の記述が偶然構文の一つであったとは。。。

最後に

今回学んだコトとして以下3点になります
・構文を色々と変更してみると想定外の挙動をすることがある
・その想定外の挙動の原因を突き止めた結果、今回のように自分にとって新しい構文と出会うことがある
・この一連の作業が少し結論を導くのに時間がかかりましたが、楽しさを感じた自分がいる、ということに気づいた

以上、私が経験したエラーでした!
最後まで読んでいただきありがとうございました。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0