问题是这样的:模板中用了iview的日期选择器这个组件,绑定了searchTime这个值,然后写了两个计算属性,里面分别都用到了searchTime,但是打印里面的数据的时候,发现xlist这个searchTime是正常的,但是在dataObj这个计算属性中,searchTime已经被改变了,也就是说,看起来是xlist中是直接作用于searchTime,写的startTime并没有一个拷贝的感觉,导致xlist操作一遍之后searchTime的值已经发生改变,dataObj无法正常使用。不是很理解为什么会这样,有没有大神可以解释下
<template>
<DatePicker v-model="searchTime" @on-change="searchTimeChange($event)" :options="disableDate" type="daterange" placement="bottom-start" placeholder="选择日期" style="width: 200px"></DatePicker>
</template>
<script>
data:{
searchTime
}
computed: {
xList () {
var list = []
let startTime = this.searchTime[0]
let endTime = this.searchTime[1]
while ((endTime.getTime() - startTime.getTime()) >= 0) {
let month = (startTime.getMonth() + 1).toString()
let day = startTime.getDate().toString()
list.push(`${month}月${day}日`)
startTime.setDate(startTime.getDate() + 1)
console.log('xList', endTime, startTime)
}
return list
},
dataObj () {
let startTime = this.searchTime[0]
let endTime = this.searchTime[1]
console.log(this.searchTime, startTime, endTime)
}
}
</script>
new Date()
是个对象startTime.setDate(startTime.getDate() + 1)
这一步操作会修改掉this.searchTime[0]
的值。