vue实现密码显示与隐藏按钮的自定义组件功能


Posted in Javascript onApril 23, 2019

思路

实现该组件有两个思路,一个使用v-model进行双向绑定,一个是使用prop的.sync修饰符、父子组件通信。

1.v-model形式

v-model的实现需要在自定义组件中自定义一个inputvalue值,因为vue中的父子组件传递机制问题,在组件中直接修改props注入的key字段时,vue会给出错误。子组件中定义inputvalue字段,用于子组件中input元素的值的双向绑定,子组件中的input数据绑定可以使用v-model,也可以使用实现v-model的原理语法糖,下面两种方式都可作为子组件中的数据绑定。

<input type="password" v-model="inputvalue"/>
<input type="password" :value="inputvalue" @input="inputvalue=$event.target.value"/>

关于v-model的实现可查看其他关于v-model的实现文章。

最后实现的子组件文件如下,这里的显示隐藏的点击使用的是文字,实际使用时可使用对应的icon字体图标,并设定一定的样式。

<template>
<div>
  <input :type='show?"text":"password"' :value="inputvalue" 
@input="inputvalue=$event.target.value" :placeholder='placeholder'/>
  <i :title="show?'隐藏密码':'显示密码'" @click="changePass" 
style="cursor:pointer;">{{show?'隐藏':'显示'}}</i>
</div>
</template>
 
<script>
export default {
  props: {
    value: {
      default: "",
      type: String
    },
    placeholder: {
      default: "",
      type: String
    },
  },
  data(){
    return{
      inputvalue:"",
      show:false,//密码显示或隐藏的Boolean,默认false,密码不显示
    }
  },
  watch:{
    inputvalue(news,olds){
      this.$emit("input",news);
    }
  },
  mounted(){
    this.inputvalue=this.value;
  },
  methods:{
    changePass(){
      this.show=!this.show;
    }
  }
}
</script>
<style>
</style>

父组件引用方式如下

<input-password v-model="value"></input-password>

因为这里实现的v-model的绑定方式,而v-model的实现就是监听的input事件,则当inputvalue改变时,则向父组件发出input事件,父组件使用v-model监听input事件,修改父组件中的value值,此处实现了双向绑定,同时在显示和隐藏的i标签上绑定事件,点击i标签时改变show的值,通过判断show的值动态改变input的type,实现密码的显示和隐藏。

2。.sync修饰符

.sync修饰符的实现与v-model的实现方式相同,唯一不同的是watch监听inputvalue变化时向父组件发出的事件修改为 "update:value" ,修改后inputvalue的监听函数如下

inputvalue(news,olds){
      this.$emit("update:value",news);
    },

父组件引用方式

<input-password :value.sync="value"></input-password>

写到最后

其实两种方式的实现最主要需要的还是父子组件之间的传值,使用emit,vuex,或自定义仓库等都可实现父子组件中的传值,监听inputvalue修改时可以同时使用两种emit发送,可同时支持两种方式。

以上所述是小编给大家介绍的vue实现密码显示与隐藏按钮的自定义组件功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
现如今最流行的JavaScript代码规范
Mar 08 Javascript
使用documentElement正确取得当前可见区域的大小
Jul 25 Javascript
深入解析JavaScript的闭包机制
Oct 20 Javascript
基于jquery animate操作css样式属性小结
Nov 27 Javascript
js实现div模拟模态对话框展现URL内容
May 27 Javascript
Vue.js实现简单动态数据处理
Feb 13 Javascript
详解Vue 动态添加模板的几种方法
Apr 25 Javascript
vue.js单文件组件中非父子组件的传值实例
Sep 13 Javascript
vue实现微信二次分享以及自定义分享的示例
Mar 20 Javascript
vue权限问题的完美解决方案
May 08 Javascript
JS判断数组里是否有重复元素的方法小结
May 21 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
Aug 24 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
Apr 23 #Javascript
vue缓存的keepalive页面刷新数据的方法
Apr 23 #Javascript
Vue 指令实现按钮级别权限管理功能
Apr 23 #Javascript
Vue 之孙组件向爷组件通信的实现
Apr 23 #Javascript
Vue infinite update loop的问题解决
Apr 23 #Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
Apr 23 #Javascript
仿ElementUI实现一个Form表单的实现代码
Apr 23 #Javascript
You might like
php调用c接口无错版介绍
2014/03/11 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
Javascript面向对象之四 继承
2011/02/08 Javascript
JavaScript学习笔记(二) js对象
2011/10/25 Javascript
javascript检测浏览器flash版本的实现代码
2011/12/06 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
2014/06/23 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
JSONP原理及应用实例详解
2018/09/13 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
Typescript3.9 常用新特性一览(推荐)
2020/05/14 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
python实现人工智能Ai抠图功能
2019/09/05 Python
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
本科毕业生自我鉴定
2013/11/02 职场文书
教育学专业实习生的自我鉴定
2013/11/26 职场文书
优秀的计算机专业求职信范文
2013/12/27 职场文书
缓刑人员的思想汇报
2014/01/11 职场文书
应届大学生简历中的自我评价
2014/01/15 职场文书
社区优秀志愿者材料
2014/02/02 职场文书
服务整改报告
2014/11/06 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
大学生学期个人总结
2015/02/12 职场文书
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers