基于vue封裝一個帶眼睛的密碼子組件
眼睛的icon使用的是阿里的圖標(biāo)庫https://www.iconfont.cn/
【思路分析】:
首先這個密碼組件是input+icon完成的(也可以是img但是我很懶,不想寫css)
對于input來說:要做2件事情
眼睛睜開:type是text,眼睛閉上:type是password
給父組件提交用戶輸入的值
對于圖標(biāo)來說:要做2件事
可以點擊
保證 密碼-閉眼 文本-睜眼 這個效果
【核心代碼】:
flagType
綁定動態(tài)的值 data中的flagType:'password'
,:class="[flag ? 'iconfont icon-yanjing_yincang_o': 'iconfont icon-yanjing_xianshi_o']"
動態(tài)樣式toShowPassword
函數(shù),眼睛的點擊事件
<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() }) }, ? ? ? ?//提交數(shù)據(jù) emitInput() { this.$emit('input', this.value) }, ? } ```
【父組件引用】:
我在父組件中設(shè)置了展示密碼的按鈕
<div style="width: 200px"> <h1>密碼組件</h1> <toggle-passowrd v-model="form.password"></toggle-passowrd> <el-button @click="getPassword">展示密碼</el-button> </div>
在子組件中emitInput
這個方法將子組件的數(shù)據(jù)提交到了父組件,父組件通過v-model就可以拿到這個值
這里其實還涉及一個知識點,就是v-model是怎么實現(xiàn)的?其實上面的代碼可以進行原生的改下,請看下面的代碼
<toggle-passowrd v-model="form.password"></toggle-passowrd> // 原生 <toggle-passowrd @input="setPassword" :value="form.password"></toggle-passowrd>
原生需要的方法:
setPassword(val) { this.form.password = val },
這樣知識就串聯(lián)了起來,子組件通過emit將數(shù)據(jù)給了父組件,父組件通過子組件提交的input事件去取數(shù)據(jù),而vue為此,提供了一個vue的指令,就是v-model,v-model就是獲取數(shù)據(jù),并賦值數(shù)據(jù),實現(xiàn)綁定。
以上就是基于vue封裝一個帶眼睛的密碼子組件的詳細內(nèi)容,更多關(guān)于vue帶眼睛的密碼子組件的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Vue.js實現(xiàn)數(shù)據(jù)雙向綁定的代碼示例
在我們使用vue的時候,當(dāng)數(shù)據(jù)發(fā)生了改變,界面也會跟著更新,但這并不是理所當(dāng)然的,我們修改數(shù)據(jù)的時候vue是如何監(jiān)聽數(shù)據(jù)的改變以及當(dāng)數(shù)據(jù)發(fā)生改變的時候vue如何讓界面刷新的,所以本文就給大家講講Vue.js 數(shù)據(jù)雙向綁定是如何實現(xiàn)的2023-07-07基于Vue實現(xiàn)鼠標(biāo)滾動輪控制頁面橫向滑動效果
這篇文章主要介紹了如何基于Vue實現(xiàn)鼠標(biāo)滾動輪控制頁面橫向滑動效果,文中通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-09-09Nuxt項目支持eslint+pritter+typescript的實現(xiàn)
這篇文章主要介紹了Nuxt項目支持eslint+pritter+typescript的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05vue?url跳轉(zhuǎn)解析和參數(shù)編碼介紹
這篇文章主要介紹了vue?url跳轉(zhuǎn)解析和參數(shù)編碼,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03