重点:this.$forceUpdate();
html
<div class="invoice-list" v-for="(item,index) in data" :key="index">
<img src="../../../../../static/images/arrow_bottom.png" v-if="item.imgIf" @click="clickImg(item,$event)">
</div>
js
data(){
return {
data:[
{imgIf:false,id:1},
{imgIf:false,id:2}
]
}
},
methods:{
clickImg(item){
for (let i = 0; i < this.data.length; i++) {
if (this.data[i].id=== item.id) {
this.data[i].imgIf = !this.data[i].imgIf;
}
}
}
}
可是实际点击之后页面没有任何改变,但打debugger发现数据确实改了,之后修改代码:
clickImg(item){
for (let i = 0; i < this.data.length; i++) {
if (this.data[i].id=== item.id) {
this.data[i].imgIf = !this.data[i].imgIf;
}
}
//加上这段
this.$forceUpdate();
}
添加this.$forceUpdate();进行强制渲染,效果实现。搜索资料得出结果:数据层次太多,render函数没有自动更新,需手动强制刷新。
版权声明:本文为jokren原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。