Vue.js-在方法(单击)中创建的值未显示在v-for循环中

时间:2018-06-22 12:51:46

标签: vue.js vuejs2

我希望程序获取一些数据@click,然后将其显示在v-for循环中。

单击按钮后,数据将显示在控制台中,但是页面上没有显示任何内容。

是因为在呈现元素后 之后创建了数据吗?  如何使Vue重新渲染循环以显示获取的数据?

Codepen:https://codepen.io/x84733/pen/jKxQKo?editors=1010

<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)
  }
}

1 个答案:

答案 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)
    }
  }
})

此更改后,您的代码将正常工作