如何在Vue中向对象添加属性

时间:2019-04-12 14:02:33

标签: javascript vue.js

我想向对象添加一个“时间”属性,但是出了点问题

我尝试了某种方式,就像Vue.set,this.$set或直接添加属性(object.newProperty = 'XXX')一样,但是没有用

this.allOrderList.forEach((item) => {
     this.$set(item, 'time', this.getTime())
     Vue.set(item, 'time', this.getTime())
     item.time = this.getTime()
})

getTime () {
     return Math.round(Math.random()*(60 - 30)+30)
}

有人可以帮我解决吗?谢谢

1 个答案:

答案 0 :(得分:0)

没有看到完整的代码,很难说出问题所在,因为Vue.set(item, 'time', this.getTime())是添加属性的正确语法。

这是您的代码的小提琴,它将属性时间添加到项https://jsfiddle.net/1vnfjh62/的列表中。也许它将帮助您在代码中看到问题。

编辑1:

根据您注释中的代码,我认为问题在于您将allOrderList设置为服务器中的数组对象。您应该只将服务器中的项目添加到vue.js数组中。因此,您可以像这样初始化Vue.js:

data: {
    allOrderList: []
}

然后将项目从服务器追加到您的数组中

    this.axios.get('/order/refresh').then((res) => {         
      res.data.data.forEach((item) => { 
        item.created_at = timestampToTime(item.created_at) 
        item.time = this.getTime()
        this.allOrderList.push(item)
      })
    })

您这里不需要使用Vue.set(...),因为它还不是反应性对象。