我想向对象添加一个“时间”属性,但是出了点问题
我尝试了某种方式,就像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)
}
有人可以帮我解决吗?谢谢
答案 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(...)
,因为它还不是反应性对象。