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动态调整iframe高度的方法
Mar 06 Javascript
如何快速的呈现我们的网页的技巧整理
Jul 01 Javascript
一个报数游戏js版(约瑟夫环问题)
Aug 05 Javascript
js用正则表达式来验证表单(比较齐全的资源)
Nov 17 Javascript
javascript变量声明实例分析
Apr 25 Javascript
JS加载器如何动态加载外部js文件
May 26 Javascript
JavaScript关于提高网站性能的几点建议(一)
Jul 24 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
Mar 21 Javascript
AngularJS service之select下拉菜单效果
Jul 28 Javascript
JS实现百度搜索接口及链接功能实例代码
Feb 02 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 jQuery
移动端JS实现拖拽两种方法解析
Oct 12 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学习 函数 课件
2008/06/15 PHP
php获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
jQuery使用经验小技巧(推荐)
2016/05/31 Javascript
jquery实现网页定位导航
2016/08/23 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
jquery实现提示语淡入效果
2017/05/05 jQuery
Agularjs妙用双向数据绑定实现手风琴效果
2017/05/26 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
[05:59]2018DOTA2国际邀请赛寻真——只为胜利的Secret
2018/08/13 DOTA
python开发之list操作实例分析
2016/02/22 Python
python2.7无法使用pip的解决方法(安装easy_install)
2018/04/03 Python
Python基于dom操作xml数据的方法示例
2018/05/12 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
Python3 xml.etree.ElementTree支持的XPath语法详解
2020/03/06 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
英语专业毕业个人求职自荐信
2013/09/21 职场文书
开水果连锁店创业计划书
2013/12/29 职场文书
工程专业应届生求职信
2014/02/19 职场文书
六年级学生评语大全
2014/12/26 职场文书
黄河绝恋观后感
2015/06/08 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
会议主持词通用版
2019/04/02 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
golang 实现Location跳转方式
2021/05/02 Golang
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL
React自定义hook的方法
2022/06/25 Javascript