やりたい事
- vue.jsを利用し、jsonでとってきたデータをlistで表示
→できた
2. 似たような事を繰り返すのでtemplateを使いたい★目的
→うまくできず。
なおvue.jsを触って2日めぐらいで、javascript自体の理解が浅いです。
構成
- main.html (表示用HTML) - dataget.cgi (jsonを返すcgi)
動いたソース(1)
<!DOCTYPE html> <html><head><meta charset="utf-8"><title>Vue TEST</title></head> <body> <div id="app"> <ul>data <li v-for="(v,k) in results.data" v-if="k!='body'">{{ k }} : {{v}}</li> <li v-else>{{ k }} : <pre>{{v}}</pre></li> </ul> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script src="https://unpkg.com/axios/dist/axios.min.js"></script> <script> const vm = new Vue({ el: '#app', data: { results: {} }, mounted() { axios.get("./dataget.cgi", { params:{ user: "aaaa", method: "AAA" }}) .then(response => { this.results = response.data; }) } }); </script> </body></html>
出力結果(疑似)
<ul>data <li>date: 2019/11/11 00:00</li> <li>subject: xxxx</li> <li>body: <pre> aaa bbb ccc </pre> </li> </ul>
ここからどうしたいか
userとmethodを与えてjsonを取得していますが、これを設定を変えて複数出力させたいです。
繰り返しの処理になるので、templateやらcomponentやらを使いたいのですが、
コードについては全然検討がついてません。
無理やり形にしたのは下記のような感じです。
<div id="app"> <ul>getdata2 <getdata user="aaaa" method="AAAA" v-for="(v,k) in results.data"></getdata> </ul> </div> Vue.component('getdata', { template: `<li>{{k}}: {{v}}</li>`, props: ["user","method"], })
曖昧な質問で申し訳ないのですが、どうすればよいか教えて頂けますか?
あなたの回答
tips
プレビュー