javascript - 在 Vue.js 中迭代 JSON 和打印值

标签 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>

下面是我得到的回复:

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

问题在于:

<ol>
    <li v-for="track in tracks">@{{ track.name }}</li>
</ol>

没有打印出轨道名称。

我的控制台没有错误,所以作为 Javascript 和 Vue.js 的新手,我不确定哪里出错了。

如何获取要显示的名称?

编辑

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

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

最佳答案

您返回的响应是一个包含另一个数组的数组 - 该数组又包含代表您的轨迹的实际对象。

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

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

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

关于javascript - 在 Vue.js 中迭代 JSON 和打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40865660/

相关文章:

javascript - 仅当数组包含奇数个项目时,删除动态填充的 <li> 才有效

javascript - 如何在 HTML5 Audio 中控制播放和暂停

javascript - 如何在 HTML 文件中导入 EJS 文件

vue.js - Vue-Router:通过正确的身份验证保护私有(private)路由

vue.js - Vue 在路由器上进入过渡

javascript - 关于如何将 pos 系统上的交易数据插入数据库的想法?

javascript - Vue.js - 观察对象的特定属性并在变化时加载数据

javascript - JSON 整数自动转为除 id 之外的字符串

javascript - 在 v-for 循环中使用 ajax 更改值

javascript - 在完整文档中查找最接近的元素