【发布时间】:2018-05-30 11:34:39
【问题描述】:
我有一个使用单文件组件制作的 vue.js 应用程序。我的数据中声明了一个空数组:
data: function () {
return {
teamKeys: []
}
},
然后我用我的一种方法将值推入其中:
fetchTeams (token) {
var this_ = this
var url = 'myapiserver.com/teams'
this.axios.get(url, {
params: {
accessToken: token
}
})
.then(function (response) {
var teams = response.data.teams[0].teams
teams.forEach(function (t) {
this_.teamKeys.push(String(t.team_key))
})
})
.catch(function (error) {
console.log(error)
})
},
(使用实际的 fetchTeams 方法更新) 然后,在另一种方法中,我尝试使用 forEach 循环遍历它。
fetchRosters (token) {
var teamKeys = this.teamKeys
teamKeys.forEach(function (key) {
console.log(key)
// do stuff
})
}
方法在mounted中一个接一个地调用:
mounted () {
this.$nextTick(() => {
var accessToken = this.$route.query.accessToken
this.fetchTeams(accessToken)
this.fetchRosters(accessToken)
})
}
forEach 循环由于某种原因不起作用,似乎数组被视为空,因为 forEach 的内部永远不会被访问。另外,如果我在致电forEach 之前这样做:
console.log(this.teamKeys)
console.log(JSON.stringify(this.teamKeys))
第二个输出为空白[],第一个输出在控制台中,如下所示:
Array(2)
0: "371.l.215756.t.1"
1: "371.l.621475.t.2"
length: 2
__ob__: Observer {value: Array(2), dep: Dep, vmCount: 0}
__proto__: Array
我确定我在做一些愚蠢的事情。我没有正确创建数组吗?我什至知道数组是什么?
【问题讨论】:
-
为什么要用 JSON.stringifying 数组?
-
我不知道,我试图诊断问题。我猜你做不到?
-
什么是
console.log(this.teamKeys.length) -
嗯,它的 0 出于某种原因。这没有任何意义,因为如果我之前执行
console.log(this.teamKeys),它会在控制台中显示length: 2。 -
你正在运行一个异步任务,这就是为什么它在需要时没有获得 teamKeys
标签: javascript arrays vue.js