我希望程序获取一些数据@click
,然后将其显示在v-for
循环中。
单击按钮后,数据将显示在控制台中,但是页面上没有显示任何内容。
是因为在呈现元素后 之后创建了数据吗? 如何使Vue重新渲染循环以显示获取的数据?
<v-btn @click="fetchData">
fetch propeties
</v-btn>
<h2>Properties:</h2>
<div v-for="item in properties">
<div>{{item.title}}: {{item.value}}</div>
</div>
...
data () {
return {
properties: {}
}
},
methods: {
fetchData () {
var nameObj = {'title': 'name'}
var sizeObj = {'title': 'size'}
nameObj['value'] = 'file.txt'
sizeObj['value'] = 12
this.properties['name'] = nameObj
this.properties['size'] = sizeObj
console.log(this.properties)
}
}
答案 0 :(得分:2)
在vuejs文档中,明确提到v-for用于数组而不是对象。
https://vuejs.org/v2/guide/list.html
您的属性是一个名称为大小的对象。
进行此更改
new Vue({
el: '#app',
data () {
return {
properties: []
}
},
methods: {
fetchData () {
var nameObj = {'title': 'name'}
var sizeObj = {'title': 'size'}
nameObj['value'] = 'file.txt'
sizeObj['value'] = 12
this.properties.push(nameObj)
this.properties.push(sizeObj)
console.log(this.properties)
}
}
})
此更改后,您的代码将正常工作