【发布时间】:2020-04-12 15:56:04
【问题描述】:
使用 VUE 和 Axios 我正在尝试从 Blizzards API 服务器中提取数据 - 我想从不同的游戏区域获取数据。我使用的代码从两个区域加载数据,但只在我的表中放置一组。
我的 VUE
const vm = new Vue({
el: '#app',
data: {
ladderTeams: [],
},
mounted() {
this.pullGMS();
},
methods: {
async pullGMS() {
axios.all([
axios.get('https://us.api.blizzard.com/sc2/ladder/grandmaster/1?access_token='),
axios.get('https://us.api.blizzard.com/sc2/ladder/grandmaster/2?access_token=')
])
.then(axios.spread((responseNA, responseKR) => {
this.ladderTeams = responseNA.data.ladderTeams;
this.ladderTeams = responseKR.data.ladderTeams;
console.log(this.ladderTeams = responseNA.data.ladderTeams);
console.log(this.ladderTeams = responseKR.data.ladderTeams);
}))
},
},
我的 HTML
<div class="content">
<div style="height:400px;overflow:auto;position:relative;top:40px;" class="table" id="app">
<table>
<tr>
<th>Clan</th>
<th>Player Name</th>
<th>Race</th>
<th>MMR</th>
</tr>
<tr v-for="(ladder, teamMembers, displayName, mmr) in ladderTeams">
<td>{{ ladder.teamMembers[0].clanTag }}</td>
<td>{{ ladder.teamMembers[0].displayName }}</td>
<td>{{ ladder.teamMembers[0].favoriteRace }}</td>
<td>{{ ladder.mmr }}</td>
</tr>
</tr>
</table>
</div>
它确实可以很好地从第二个 API 加载所有信息,但不是第一个 - 如果我评论第二个“this”代码但是 - 第一个加载 - 所以我知道它也有效,我只是显然在做某事这里错了。
【问题讨论】:
-
试试这个 ..
var x = {}; x.a = 1; x.a = 2; console.log(x.a);- 他的输出只有2,你感到惊讶吗?如果没有,那么您应该能够立即看到问题 -
response??.data.ladderTeams是一个数组吗?如果是这样...this.ladderTeams = [... responseNA.data.ladderTeams, ...responseKR.data.ladderTeams];会解决你的问题 - 否则this.ladderTeams = Object.assign({}, responseNA.data.ladderTeams, responseKR.data.ladderTeams);可以解决问题 -
@JaromandaX - 这并不让我感到惊讶,当你以这种方式定位它时它是有道理的。感谢您的帮助:)
标签: javascript html api vue.js axios