所以我要实现的是使用v-if调用方法,并且在方法内部更改数据内部的属性,一旦完成,然后返回true,则显示元素。
示例:
export default {
data() {
return {
lastMonths: [
{
month: '11',
monthNumber: moment().format('MM'),
printed: false
},
{
month: '10',
monthNumber: moment().subtract(1, 'months').format('MM'),
printed: false
},
{
month: '9',
monthNumber: moment().subtract(2, 'months').format('MM'),
printed: false
}
]
}
},
methods: {
displayOptgroup(index, month) {
if (!this.lastMonths[index].printed && (this.lastMonths[index].monthNumber == month)) {
this.lastMonths[index].printed = true;
return true;
}
return false;
},
}
}
<div>
<span class="optgroup" v-if="displayOptgroup(0, option.month)">{{ lastMonths[0].month }}</span>
</div>
但是什么也没出现,但是只要我注释了我设置print = true的那一行,就可以了!
我不明白为什么会这样。我尝试使用计算属性本身,计算属性调用方法并在那里进行突变,但结果相同。
谢谢。