vue.js(Nuxt.js)で連続したアルファベットのファイルを作成しv-forで繰り返し出力しようとしました。
そのときscript内で配列からimageファイルを作成しtemplateに出力する方法がうまくないか調べています。
ファイルの作成
images/logo-a.png
こんな感じのファイルをアルファベット順に作成していきます。
images/logo-a.png images/logo-b.png images/logo-c.png images/logo-d.png images/logo-e.png
配列の作成
次に配列を作成します。
javascript
1var alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
配列をスマートに
ちょっとスマートじゃなかったのでこちらのサイトを参考にそのままですが作ってみました。
JavaScriptでアルファベットの配列をスマートに作る
javascript
1function Range(first, last) { 2 var first = first.charCodeAt(0); 3 var last = last.charCodeAt(0); 4 var result = new Array(); 5 for(var i = first; i <= last; i++) { 6 result.push(String.fromCodePoint(i)); 7 } 8 return result; 9} 10 11var alphabet = Range('A', 'Z');
アルファベットの配列を取得してv-forで出力する
こちらをまとめると下記のソースになります。
vue
1<template lang="pug"> 2 section.py-12 3 v-container.mt-12.mb-6 4 div(class="d-flex flex-wrap") 5 .card(v-for="alphabet in alphabets" :key="alphabet.id") 6 img(:src="`/images/logo-${alphabet}.png`") 7</template> 8 9 10<script> 11export default { 12 data () { 13 function Range(first, last) { 14 var first = first.charCodeAt(0); 15 var last = last.charCodeAt(0); 16 var result = new Array(); 17 for(var i = first; i <= last; i++) { 18 result.push(String.fromCodePoint(i)); 19 } 20 return result; 21 } 22 var alphabets = Range('A', 'Z'); 23 return { 24 alphabets, 25 } 26 }, 27} 28</script>
こちらでも画像ファイルは出力するのですが、img部分をscript内に収めtemplate内をもっとスマートにしたいと思い。
img(:src="`/images/logo-${alphabet}.png`")
このような書き方をしたのですがうまく表示されません。
vue
1<template lang="pug"> 2 section.py-12 3 v-container.mt-12.mb-6 4 div(class="d-flex flex-wrap") 5 .card(v-for="alphabet in alphabets" :key="alphabet.id") 6 img(:src="alphabet.logoimage") 7</template> 8 9 10<script> 11export default { 12 data () { 13 function Range(first, last) { 14 var first = first.charCodeAt(0); 15 var last = last.charCodeAt(0); 16 var result = new Array(); 17 for(var i = first; i <= last; i++) { 18 result.push(String.fromCodePoint(i)); 19 } 20 return result; 21 } 22 var alphabets = Range('A', 'Z'); 23 for(var j = 0; j < alphabets.length; j++) { 24 alphabets.push({ 25 logoimage: `/images/home/logo-${this.alphabets}.png` 26 }) 27 }; 28 return { 29 alphabets, 30 } 31 }, 32} 33</script>
dataの外の配列をscript内で回してv-forまで持っていく方法をさがしています。
従来のv-forでのやり方は検索したらでてくるのですがこのやり方の調べ方がよくないのかいまいち調べきれておりません。
配列されたものをscript内で回しtemplateで出力する方法のロジックや調べ方などの回答をお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/12 02:16