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 preload&amp;lazy load
May 13 Javascript
javascript 折半查找字符在数组中的位置(有序列表)
Dec 09 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
Sep 22 Javascript
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
Sep 01 Javascript
jQuery+Ajax实现无刷新分页
Oct 30 Javascript
Javascript中神奇的this
Jan 20 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
May 20 Javascript
AngularJs  unit-testing(单元测试)详解
Sep 02 Javascript
JavaScript实现打印星型金字塔功能实例分析
Sep 27 Javascript
AngularJS $http post 传递参数数据的方法
Oct 09 Javascript
Layui选项卡制作历史浏览记录的方法
Sep 28 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
Aug 26 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官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
js实时获取系统当前时间实例代码
2013/06/28 Javascript
ExtJs纵坐标值重复问题的解决方法
2014/02/27 Javascript
javascript实现数独解法
2015/03/14 Javascript
JS判断字符串包含的方法
2015/05/05 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
基于jQuery.i18n实现web前端的国际化
2018/05/04 jQuery
详解js中Array的方法及技巧
2018/09/12 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
JavaScript代码异常监控实现过程详解
2020/02/17 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
python实现清屏的方法
2015/04/30 Python
python实现ID3决策树算法
2018/08/29 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
解决HTML5手机端页面缩放的问题
2017/10/27 HTML / CSS
英国在线潜水商店:Simply Scuba
2019/03/25 全球购物
高二化学教学反思
2014/01/30 职场文书
初二学习计划书范文
2014/04/27 职场文书
入职担保书范文
2014/05/21 职场文书
年终工作总结范文2014
2014/11/27 职场文书
万里长城导游词
2015/01/30 职场文书
经营目标责任书
2015/05/08 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
先进个人主要事迹怎么写
2015/11/04 职场文书
如何利用js在两个html窗口间通信
2021/04/27 Javascript