- 数据是通过v-for渲染出来,点击某个按钮想显示删除文字,没想到所有的删除文字都显示了?
点击的时候,传一个唯一标识进去,并且把他重新赋值,在显示删除哪里加一个判断。看赋值的标识和传入的标识是否一致 && 当前显示是true
代码实现
<div class="del_llince" @click.stop="isR(item.Id, item.Name)">...</div>
<div
class="remo"
v-if="choose === item.Id && isRemove"
@click="del_allince(item.Id, item.Name)"
>删除</div>
isR (id, name) {
console.log(id)
console.log(name)
this.choose = id
this.isRemove = !this.isRemove
console.log('aaa', this.isRemove)
},
- 经过上一步,你会发现删除的显示与隐藏,只能通过点击
...
来实现影藏(改变isRemove的状态),但是我们想点击界面的任意一个地方,都让他消失,怎么弄?
代码实现
<template>
<div class="create_contain" @click="isRemove = false">
</div>
<template>
关键点:
- 在最外层的容器添加一个点击事件,专门让isRemove这个标识变为false
- 在最初的点击事件,加.stop阻止事件冒泡
- 如果在最外层的容器添加一个点击事件,没有生效,那你要审查元素,看你点击的部分,是否在最外层的容器的范围之内,不在的话,建议设置宽度为100%