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格式化数字保留两位小数点示例代码
Oct 15 Javascript
javascript处理表单示例(javascript提交表单)
Apr 28 Javascript
[原创]推荐10款最热门jQuery UI框架
Aug 19 Javascript
javascript数据结构与算法之检索算法
Apr 04 Javascript
jQuery实现定时读取分析xml文件的方法
Jul 16 Javascript
基于jQuery实现的QQ表情插件
Aug 25 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
Sep 06 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
Nov 22 Javascript
任意Json转成无序列表的方法示例
Dec 09 Javascript
jquery——九宫格大转盘抽奖实例
Jan 16 Javascript
微信小程序如何实现五星评价功能
Oct 15 Javascript
three.js中多线程的使用及性能测试详解
Jan 07 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
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
2013/10/25 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
php-fpm中max_children的配置
2019/03/15 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
浅析Javascript使用include/require
2013/11/13 Javascript
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
JavaScript定时显示广告代码分享
2015/03/02 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
果断收藏9个Javascript代码高亮脚本
2016/01/06 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
2018/01/11 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
python私有属性和方法实例分析
2015/01/15 Python
Python计算字符宽度的方法
2016/06/14 Python
python编程嵌套函数实例代码
2018/02/11 Python
python 读取文件并替换字段的实例
2018/07/12 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
活动总结报告怎么写
2014/07/03 职场文书
学习礼仪心得体会
2014/09/01 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
会计人员岗位职责
2015/02/03 职场文书
横店影视城导游词
2015/02/06 职场文书
事业单位个人总结
2015/02/12 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android