在循环中使用右键--vue

本文介绍了如何使用Vue.js在页面上创建可动态显示与隐藏的右键菜单,通过监听鼠标事件控制菜单的显示和关闭,同时展示了数据绑定和状态管理的实践。关键点包括:v-for循环、v-show控制、$set操作、事件监听和响应式更新。
摘要由CSDN通过智能技术生成
  1. 页面代码
   <div  v-for="data in this.content" :key="data.id" @contextmenu.prevent="openMenu($event,data)">
      <!--右键,通过每一项的visible来控制当前项的右键是否显示-->
      <ul v-show="data.visible" :style="{left:left+'px',top:top+'px'}" class="contextmenu">
        <li @click="">重命名</li>
        <li >删除</li>
        <li >编辑</li>
      </ul>
       <!--循环内容-->
    </div>
  1. 在data()中定义需要的变量属性
  data(){
    return{ 
	        top: 0,
	      	left: 0,
	      	visible: false,
	      	item:null,
        }
  }, 
  1. 右键打开关闭方法
	openMenu(e,data) {
	  const that=this;
	  var x = e.pageX;
	  var y = e.pageY;
	  that.top = y;
	  that.left = x;
	  //将循环之中的每一项添加visible属性,并设置为false
	  that.content.forEach(function (data) {
	    that.$set(data, "visible", false);
	  });
	  //将循环中的当前点击项的visible设置为true
	  that.item=data;
	  that.$set(data, "visible", true);
	},
//关闭菜单
    closeMenu() {
      const that=this;
      that.visible=false;
      //将循环中的当前点击项的visible设置为false
      that.$set(that.item, "visible", false);
    },
  1. 右键打开关闭的监听方法
  watch: {
    visible(value) {
      if (value) {
        document.body.addEventListener('click', this.closeMenu)
      } else {
        document.body.removeEventListener('click', this.closeMenu)
      }
    }
  },
  1. 右键样式
.contextmenu {
  margin: 0;
  background: #fff;
  z-index: 3;
  position: absolute;
  list-style-type: none;
  padding: 5px 0;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 400;
  color: #333;
  box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, 0.3);
}

.contextmenu li {
  margin: 0;
  padding: 7px 16px;
  cursor: pointer;
}
.contextmenu li:hover {
  background: #eee;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值