基于vue封装一个带眼睛的密码子组件

 更新时间:2023年09月15日 08:35:30   作者:小孔菜菜  
这篇文章给大家介绍了基于vue封装一个带眼睛的密码子组件的方法,文章中有详细的代码讲解,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

眼睛的icon使用的是阿里的图标库https://www.iconfont.cn/

【思路分析】:

首先这个密码组件是input+icon完成的(也可以是img但是我很懒,不想写css)

对于input来说:要做2件事情

  • 眼睛睁开:type是text,眼睛闭上:type是password

  • 给父组件提交用户输入的值

对于图标来说:要做2件事

  • 可以点击

  • 保证 密码-闭眼 文本-睁眼 这个效果

【核心代码】:

  • flagType绑定动态的值 data中的flagType:'password',

  • :class="[flag ? 'iconfont icon-yanjing_yincang_o': 'iconfont icon-yanjing_xianshi_o']"动态样式

  • toShowPassword函数,眼睛的点击事件

    <el-input
        v-model="value"
        :type="flagType"
        ref="password"
        @input="emitInput"
    >
        <i
            slot="suffix"
            class="el-input__icon eye-wrapper"
            :class="[flag ? 'iconfont icon-yanjing_yincang_o': 'iconfont icon-yanjing_xianshi_o']"
            @click="toShowPassword">
        </i>
    </el-input>

【script代码】:

```js
    data() {
        return {
            value: '',
            flag: true,
            flagType: 'password',
        }
    },
```
```js
    methods: {
        toShowPassword() {
            this.flag = !this.flag
            this.flagType = this.flag ? 'password' : 'text'
            this.$nextTick(() => {
                this.$refs.password.focus()
            })
        },
        //提交数据
        emitInput() {
            this.$emit('input', this.value)
        },
    }
```

【父组件引用】:

我在父组件中设置了展示密码的按钮

    <div style="width: 200px">
        <h1>密码组件</h1>
        <toggle-passowrd v-model="form.password"></toggle-passowrd>
        <el-button @click="getPassword">展示密码</el-button>
    </div>

在子组件中emitInput这个方法将子组件的数据提交到了父组件,父组件通过v-model就可以拿到这个值

这里其实还涉及一个知识点,就是v-model是怎么实现的?其实上面的代码可以进行原生的改下,请看下面的代码

<toggle-passowrd v-model="form.password"></toggle-passowrd>
// 原生
<toggle-passowrd @input="setPassword" :value="form.password"></toggle-passowrd>

原生需要的方法:

    setPassword(val) {
        this.form.password = val
    },

这样知识就串联了起来,子组件通过emit将数据给了父组件,父组件通过子组件提交的input事件去取数据,而vue为此,提供了一个vue的指令,就是v-model,v-model就是获取数据,并赋值数据,实现绑定。

以上就是基于vue封装一个带眼睛的密码子组件的详细内容,更多关于vue带眼睛的密码子组件的资料请关注脚本之家其它相关文章!

相关文章

  • Vue设置长时间未操作登录自动到期返回登录页

    Vue设置长时间未操作登录自动到期返回登录页

    这篇文章主要介绍了Vue设置长时间未操作登录以后自动到期返回登录页,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2020-01-01
  • element多个表单校验的实现

    element多个表单校验的实现

    在项目中,经常会遇到表单检验,在这里我分享在实际项目中遇到多个表单同时进行校验以及我的解决方法,感兴趣的可以了解一下
    2021-05-05
  • Vue.js实现数据双向绑定的代码示例

    Vue.js实现数据双向绑定的代码示例

    在我们使用vue的时候,当数据发生了改变,界面也会跟着更新,但这并不是理所当然的,我们修改数据的时候vue是如何监听数据的改变以及当数据发生改变的时候vue如何让界面刷新的,所以本文就给大家讲讲Vue.js 数据双向绑定是如何实现的
    2023-07-07
  • Vue3在css中使用js变量及其原理解读

    Vue3在css中使用js变量及其原理解读

    这篇文章主要介绍了Vue3在css中使用js变量及其原理解读,结合实例代码介绍了vue3中css使用script中定义的变量的方法,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • 基于Vue实现鼠标滚动轮控制页面横向滑动效果

    基于Vue实现鼠标滚动轮控制页面横向滑动效果

    这篇文章主要介绍了如何基于Vue实现鼠标滚动轮控制页面横向滑动效果,文中通过代码示例和图文结合的方式给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-09-09
  • Nuxt项目支持eslint+pritter+typescript的实现

    Nuxt项目支持eslint+pritter+typescript的实现

    这篇文章主要介绍了Nuxt项目支持eslint+pritter+typescript的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Vue项目部署上线全过程记录(保姆级教程)

    Vue项目部署上线全过程记录(保姆级教程)

    vue项目开发完毕后,我们需要将项目打包上线,同时我们希望可以在本地预览生产环境项目,下面这篇文章主要给大家介绍了关于Vue项目部署上线的相关资料,需要的朋友可以参考下
    2023-03-03
  • 浅谈vue 多个变量同时赋相同值互相影响

    浅谈vue 多个变量同时赋相同值互相影响

    这篇文章主要介绍了浅谈vue 多个变量同时赋相同值互相影响,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • vue-cli 构建骨架屏的方法示例

    vue-cli 构建骨架屏的方法示例

    这篇文章主要介绍了vue-cli 构建骨架屏的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • vue url跳转解析和参数编码介绍

    vue url跳转解析和参数编码介绍

    这篇文章主要介绍了vue url跳转解析和参数编码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03

最新评论