【发布时间】:2017-01-24 08:35:01
【问题描述】:
我有一个功能正常的 sn-p,可以在此处提供歌曲列表:https://jsfiddle.net/jeremypbeasley/guraav4r/8/
var apiURL = "https://ws.audioscrobbler.com/2.0/?method=user.gettoptracks&user=thisisheroic&period=7day&limit=6&api_key=3cbc1a3aa903935d08223263bcc3ba0b&format=json";
new Vue({
el: '#demo',
data: {
commits: null
},
created: function () {
this.fetchData()
},
methods: {
fetchData: function () {
var xhr = new XMLHttpRequest()
var self = this
xhr.open('GET', apiURL)
xhr.onload = function () {
self.commits = JSON.parse(xhr.responseText)
}
xhr.send()
}
}
})
html:
<div id="demo">
<h1>Tracks</h1>
<li v-for="mytrack in commits.toptracks.track">
{{mytrack.name}}
</li>
</div>
问题是,当我尝试在组件的上下文中使用相同的通用方法时,它会中断并记录两个错误:
首先:[Vue warn]: The "data" option should be a function that returns a per-instance value in component definitions.,另一个告诉我 commits.toptracks 未定义。
我的失败尝试:
Vue.component('manage-posts', {
template: '#manage-template',
data: {
commits: null,
},
created: function () {
this.fetchData()
},
methods: {
fetchData: function () {
var xhr = new XMLHttpRequest()
xhr.open('GET', apiURL)
xhr.onload = function () {
this.data = JSON.parse(xhr.responseText);
console.log(JSON.parse(xhr.responseText));
}
xhr.send()
}
}
})
任何帮助理解这些错误并帮助我理解我做错了什么将不胜感激!
【问题讨论】:
标签: javascript json vue.js