自定义指令实现按钮加密

1. 需求描述

给按钮加一个密码保护,输入的密码正确之后才能进行下一步操作。

在这里插入图片描述

2. 实现思路

1. 直接在点击事件里面处理密码校验,

<!--  template -->
<el-button type="warning" @click="handlePub">发布</el-button>
//js
//发布
handlePub () {
   this.$prompt("请输入密码", "提示", {
      confirmButtonText: "确定",
      cancelButtonText: "取消",
      inputPattern: /\S/,
      inputType: "password",
      inputErrorMessage: "密码不能为空"
    }).then(({ value }) => {
      //对比密码
      if(value==123456){
        // 其他操作
      }else{
         this.$message.error('密码错误')
      }
    })
}

这种处理加密的方式对原来的代码入侵比较大,且如果涉及到需要加密的按钮比较多的时候,代码复用率也很低

2. 用自定义指令实现

 <el-button type="warning" v-password="handlePub">发布</el-button>
//注册自定义指令
  directives: {
    //自定义指令
    password:{
      // 当被绑定的元素插入到 DOM 中时……
	  inserted: function(el, binding) {
	    el.addEventListener("click", e => {
	      e.preventDefault();
	         checkPassword() //校验密码
	        .then(() => {
	          binding.value();
	        })
	        .catch(() => {
	          console.log("密码错误");
	        });
	    });
	  }
    }
  }
  function checkPassword(value) {
	  return new Promise((resolve, reject) => {
	    MessageBox.prompt("请输入密码", "提示", {
	      confirmButtonText: "确定",
	      cancelButtonText: "取消",
	      inputPattern: /\S/,
	      inputType: "password",
	      inputErrorMessage: "密码不能为空"
	    }).then(({ value }) => {
	      if (value === "258369") {
	        resolve(true);
	      } else {
	        Message({
	          type: "error",
	          message: "密码错误!"
	        });
	        reject(new Error("密码错误"));
	      }
	   });
	});
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值