迭代JSON并在Vue.js中打印值

Jam*_*mes 5 javascript vue.js

我是Vue的新手,我正在尝试从API检索JSON响应,然后在我的页面上打印它.

这是我到目前为止:

<body>
    <div id="mystats" class="container">
    <h1>My Top Tracks</h1>

    <ol>
        <li v-for="track in tracks">@{{ track.name }}</li>
    </ol>
    <pre>@{{ tracks|json }}</pre>
    <button v-on:click="fetchStats">Fetch stats</button>
    </div>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.3/vue.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue-resource/1.0.3/vue-resource.min.js"></script>

    <script type="text/javascript">
        $vue = new Vue({
            el: '#mystats',

            data: {

                tracks: [],

            },

            methods: {
                fetchStats: function()
                {
                   this.$http.get('/mystatsdata', {params:  {type: 'tracks'}}).then((response) => {
                    this.tracks.push(response.body);
                    console.log(this.tracks.name);
                  }, (response) => {
                    // error callback
                  }); 
                }
            }
        })
    </script>
</body>
Run Code Online (Sandbox Code Playgroud)

以下是我要回复的回复:

[
  [
    {
      "name": "Falling Away - Acoustic (Bonus Track)",
      "track_number": 8,
      "type": "track",
    }
  ]
]
Run Code Online (Sandbox Code Playgroud)

问题是:

<ol>
    <li v-for="track in tracks">@{{ track.name }}</li>
</ol>
Run Code Online (Sandbox Code Playgroud)

没有打印出曲目名称.

我的控制台没有错误,因此对Javascript和Vue.js来说有点新鲜我不太确定我哪里出错了.

如何显示名称?

编辑

以下是包含多个条目的响应(当前限制为2个):

[
  [
    {
      "name": "Falling Away - Acoustic (Bonus Track)",
      "track_number": 8,
      "type": "track",
    },
    {
      "name": "Perfect Strangers",
      "track_number": 1,
      "type": "track",
    }
  ]
]
Run Code Online (Sandbox Code Playgroud)

ect*_*der 7

您要回复的响应是包含另一个数组的数组 - 该数组又包含表示轨道的实际对象.

所以内部:<li v-for="track in tracks">@{{ track.name }}</li>,track指内部数组而不是每个对象.

要快速修复,您可以将代码更改为: <li v-for="track in tracks[0]">@{{ track.name }}</li> 并尝试.

但正确的解决方法是修复后端,将结果作为单个对象数组返回.