Vue js 在渲染之前获取 JSON
Vue js fetch JSON before it renders
我有一个关于获取 JSON 数据对象并在它装载之前渲染它的问题。
以防万一,我正在独立开发。
我不认为功能有问题。我认为这是在生命周期方面。
所以我在 VueJS 数据实例上有一个名为 listData:[]
的空数组变量,this.listData.push(response.body)
将对象推入其中。在 HTML 一侧,我 v-for 用于渲染元素的元素。
它很好地显示了结果,但在控制台上,我看到错误消息 'undefined'
它无法在数组中找到要循环的数据。
当然,第一次渲染时它是空数组。
我不想看到这个错误。有时,它无法正确呈现..
那么有什么解决办法吗?
如果您需要其他信息。我想补充更多。谢谢。
JSON
{
section1_header: 'A',
section2_header: 'B',
section3: {
0:{
subtitle: 'C',
title: '4'
},
1:{
subtitle: 'D',
title: '%'
},
}
}
HTML
<div class="s3-subcontainer" v-for="(item, index) in listData[0].section3">
<ul class="s3-script">
<li class="s3-subtitle" v-html="item.subtitle"></li>
<li class="s3-title" v-html="item.title"></li>
<ul>
</div>
JS
fetchJson: function () {
this.$http.get('')
.then(response => {
this.listData.push(response.body);
console.log('list', this.listData);
})
}
错误
假设你的 "JSON" 实际上是一个对象而不是数组,我不明白你为什么要 listData
是一个数组完全没有。
因为您的 v-for
表达式是 listData[0].section3
,您应该将初始值设置为不会导致错误的值。例如(并使其只是一个对象)...
data () { // assuming this is a component
return {
listData: {
section3: []
}
}
}
并使用
<div class="s3-subcontainer" v-for="(item, index) in listData.section3">
我也会简单地设置 listData
值而不是尝试推送它。
.then(response => { this.listData = response.body })
我有一个关于获取 JSON 数据对象并在它装载之前渲染它的问题。
以防万一,我正在独立开发。
我不认为功能有问题。我认为这是在生命周期方面。
所以我在 VueJS 数据实例上有一个名为 listData:[]
的空数组变量,this.listData.push(response.body)
将对象推入其中。在 HTML 一侧,我 v-for 用于渲染元素的元素。
它很好地显示了结果,但在控制台上,我看到错误消息 'undefined'
它无法在数组中找到要循环的数据。
当然,第一次渲染时它是空数组。
我不想看到这个错误。有时,它无法正确呈现..
那么有什么解决办法吗?
如果您需要其他信息。我想补充更多。谢谢。
JSON
{
section1_header: 'A',
section2_header: 'B',
section3: {
0:{
subtitle: 'C',
title: '4'
},
1:{
subtitle: 'D',
title: '%'
},
}
}
HTML
<div class="s3-subcontainer" v-for="(item, index) in listData[0].section3">
<ul class="s3-script">
<li class="s3-subtitle" v-html="item.subtitle"></li>
<li class="s3-title" v-html="item.title"></li>
<ul>
</div>
JS
fetchJson: function () {
this.$http.get('')
.then(response => {
this.listData.push(response.body);
console.log('list', this.listData);
})
}
错误
假设你的 "JSON" 实际上是一个对象而不是数组,我不明白你为什么要 listData
是一个数组完全没有。
因为您的 v-for
表达式是 listData[0].section3
,您应该将初始值设置为不会导致错误的值。例如(并使其只是一个对象)...
data () { // assuming this is a component
return {
listData: {
section3: []
}
}
}
并使用
<div class="s3-subcontainer" v-for="(item, index) in listData.section3">
我也会简单地设置 listData
值而不是尝试推送它。
.then(response => { this.listData = response.body })