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 相关文章推荐
js自定义事件及事件交互原理概述(二)
Feb 01 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
Apr 12 Javascript
jquery实现多条件筛选特效代码分享
Aug 28 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
Dec 22 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
Feb 22 Javascript
three.js绘制地球、飞机与轨迹的效果示例
Feb 28 Javascript
JS数组交集、并集、差集的示例代码
Aug 23 Javascript
详解vue-admin和后端(flask)分离结合的例子
Feb 12 Javascript
解决layer弹出层msg的文字不显示的问题
Sep 11 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
Mar 04 Javascript
原生js实现日期选择插件
May 21 Javascript
浅谈vue 组件中的setInterval方法和window的不同
Jul 30 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 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
destoon找回管理员密码的方法
2014/06/21 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
JavaScript检测鼠标移动方向的方法
2015/05/22 Javascript
讲解JavaScript中for...in语句的使用方法
2015/06/03 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
微信小程序实现日历签到
2020/09/21 Javascript
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
使用python编写批量卸载手机中安装的android应用脚本
2014/07/21 Python
python中函数传参详解
2016/07/03 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
django加载本地html的方法
2018/05/27 Python
Python绘制正余弦函数图像的方法
2018/08/28 Python
python获取服务器响应cookie的实例
2018/12/28 Python
Python Cookie 读取和保存方法
2018/12/28 Python
python实现堆排序的实例讲解
2020/02/21 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
美国婚礼礼品网站:MyWeddingFavors
2018/09/26 全球购物
环境工程求职简历的自我评价范文
2013/10/24 职场文书
大学生学期自我鉴定
2014/03/19 职场文书
采购意向书范本
2014/03/31 职场文书
生物科学专业自荐书
2014/06/20 职场文书
找工作求职信
2014/07/07 职场文书
供电工程专业求职信
2014/08/09 职场文书
婚姻出轨保证书
2015/05/08 职场文书
发票退票证明
2015/06/24 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书
分析Python list操作为什么会错误
2021/11/17 Python
bootstrapv4轮播图去除两侧阴影及线框的方法
2022/02/15 HTML / CSS