最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue組件封裝之input輸入框?qū)崙?zhàn)記錄

 更新時間:2022年10月16日 11:28:25   作者:阿選不出來  
在vue中會將常用的組件進(jìn)行封裝,下面這篇文章主要給大家介紹了關(guān)于Vue組件封裝之input輸入框的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

實戰(zhàn)目的

封裝一個自定義的input組件,只適用于 input元素type屬性為text或password.

實戰(zhàn)效果

核心思想

準(zhǔn)備: 需要兩個文件,分別為 register.vue(父組件), input.vue(子組件)

register.vue 引入 input.vue

import inputstyle from '@/components/input.vue'
export default {
    components: {inputstyle},
}

一 格式規(guī)范

register.vue 中對輸入框的信息進(jìn)行設(shè)置, 并傳給子組件 input.vue.

<inputstyle :input_data="input_data[0]"></inputstyle>
export default {
   ...
	input_data: [
              {
                type: 'text',
                name: 'email',
                placeholder: '請輸入郵箱',
                state: 0,
                reg: '^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$',
                error_type: '',
                message: ['郵箱不能為空哦', '郵箱格式有誤']
              },
              {
                type: 'password',
                name: 'pwd',
                placeholder: '請輸入密碼',
                state: 0,
                reg: '[a-z0-9]{8,16}',
                error_type: '',
                message: ['密碼不能為空哦!','請輸入大于8位數(shù)小于16位數(shù)的字母或數(shù)字!']
              }
     ],
}

state 代表輸入的value值是否符合規(guī)范

reg 為value值得正則表達(dá)式

input.vue 接收數(shù)據(jù), 每當(dāng)輸入框失去焦點時對內(nèi)容進(jìn)行檢驗.

<template>
    <input :type="input_data.type" :placeholder="input_data.placeholder" @blur="style($event)">
</template>

二 給父組件傳遞value值

register.vue

在子組件內(nèi)添加 :*changeData*.*sync*="formData.email"

input.vue

為input綁定事件 @input="changeData($event)"

這里我給密碼進(jìn)行了md5加密

        changeData(e){
            // 密碼類型用md5加密
            if(this.input_data.type = 'password') {
                this.$emit('update:changeData', md5(e.target.value.trim()))
            }else {
                this.$emit('update:changeData', e.target.value.trim())
            }
        }

三 錯誤提示

在父組件中添加一個錯誤提示條.

設(shè)置一個變量 error_message

            message: {
              // 錯誤信息提示
              error_message: '',
              // 錯誤提示條的透明度
              opacity: 0,
              // 控制提交按鈕
              go: false
            },

register.vue

對子組件綁定事件

:*error_message*.*sync*="message.error_message"

對 error_message 進(jìn)行數(shù)據(jù)監(jiān)視, 每當(dāng)error_message發(fā)生改變時,就進(jìn)行一次提示

       watch: {
          'message.error_message': {
            handler(){
              this.alertmessage()
            }
          }
        }

input.vue

input每次觸發(fā) @blur="style($event)" 的時候, 根據(jù) input_data.error_type 的值, 觸發(fā) update:error_message 事件, input_data.message[error_type]為參數(shù),以改變error_message的值

即: this.$emit('update:error_message', this.input_data.message[0])

四 格式檢驗

根據(jù)父組件傳過來的數(shù)據(jù) input_data 中的 regvalue值進(jìn)行檢驗

將檢驗的結(jié)果反映給 register.vue(父組件)

檢驗分為兩種情況:

? 格式無誤: 將 input_data 中的state修改為true.

? 格式有誤: 判斷錯誤類型, 修改 error_type

我們不能直接在 input.vue 中修改 input_data 的數(shù)據(jù).

單向數(shù)據(jù)流

所有的 props 都遵循著單向綁定原則,props 因父組件的更新而變化,自然地將新的狀態(tài)向下流往子組件,而不會逆向傳遞。

我們需要在 register.vue 中為 input.vue 綁定自定義事件, 子組件將數(shù)據(jù)以參數(shù)的形式傳給父組件,并觸發(fā)($emit)該事件.

register.vue

為子組件綁定以下事件:

這里我用了 .sync修飾符, 不了解的可以去查查

:statechange.sync="input_data[0].state"

:error_typechange.sync="input_data[0].error_type"

input.vue

export default {
	props:['input_data']
	methods: {
        // 根據(jù) is_format判斷數(shù)據(jù)格式是否正確,并將檢驗的信息傳給父組件
        style(e) {
            let reg = null
            reg = eval(`/${this.input_data.reg}/`)
            let state = reg.test(e.target.value)
            if(!state) {
                this.$emit('update:statechange', false)
                if(e.target.value) {               
                    this.$emit('update:error_typechange', 1)
                    // 下文有講
                    this.$emit('update:error_message', this.input_data.message[1])
                }else {
                    this.$emit('update:error_typechange', 0)
                    this.$emit('update:error_message', this.input_data.message[0])
                }
            }else {
            this.$emit('update:statechange', true)
            }
        },
	}
}

五 多個input框的檢驗

檢驗input_data中是否有state為false的對象.

有就根據(jù)error_type進(jìn)行錯誤提示

go變量控制是否觸發(fā)提交表單.

for(let i = 0; i < this.is_format.length; i ++) {
	if(!this.is_format[i].style) {
        								                    this.errormessage=this.is_format[i].message[this.is_format[i].error_type]
       this.alertmessage()
       this.go = false
       break;
    }
       this.go = true
 }    

寫在最后

到此這篇關(guān)于Vue組件封裝之input輸入框的文章就介紹到這了,更多相關(guān)Vue組件封裝input輸入框內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue.js中Line第三方登錄api的實現(xiàn)代碼

    Vue.js中Line第三方登錄api的實現(xiàn)代碼

    這篇文章主要介紹了Vue.js中Line第三方登錄api實現(xiàn)代碼,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Vue入口文件index.html緩存的問題及解決

    Vue入口文件index.html緩存的問題及解決

    這篇文章主要介紹了Vue入口文件index.html緩存的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Vant picker 多級聯(lián)動操作

    Vant picker 多級聯(lián)動操作

    這篇文章主要介紹了Vant picker 多級聯(lián)動操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue-cli中安裝方法(圖文詳細(xì)步驟)

    vue-cli中安裝方法(圖文詳細(xì)步驟)

    這篇文章主要介紹了vue-cli中安裝方法(圖文詳細(xì)步驟),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • vue2.0多條件搜索組件使用詳解

    vue2.0多條件搜索組件使用詳解

    這篇文章主要為大家詳細(xì)介紹了vue2.0多條件搜索組件的實現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • vue3時間戳轉(zhuǎn)換(不使用過濾器)

    vue3時間戳轉(zhuǎn)換(不使用過濾器)

    這篇文章主要介紹了vue3時間戳轉(zhuǎn)換,?vue2轉(zhuǎn)換時間戳的時候一般使用過濾器的方式,到vue3之后,vue3移除了過濾器,就不能再用了,官方是推薦使用方法或者計算屬性的方式。下面我們來看看詳細(xì)介紹吧</P><P>
    2021-12-12
  • vue elementUI Plus實現(xiàn)拖拽流程圖的詳細(xì)代碼(不引入插件)

    vue elementUI Plus實現(xiàn)拖拽流程圖的詳細(xì)代碼(不引入插件)

    文章介紹了如何使用Vue和elementUI Plus實現(xiàn)一個簡單的拖拽流程圖功能,不引入任何插件,完全手寫,設(shè)計思路,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • Vue中對數(shù)組和對象進(jìn)行遍歷和修改方式

    Vue中對數(shù)組和對象進(jìn)行遍歷和修改方式

    這篇文章主要介紹了Vue中對數(shù)組和對象進(jìn)行遍歷和修改方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue 按鍵修飾符處理事件的方法

    Vue 按鍵修飾符處理事件的方法

    這篇文章主要介紹了Vue 按鍵修飾符的相關(guān)資料,vue中新增按鍵修飾符和系統(tǒng)修飾符來處理類似的事件,具體內(nèi)容詳情大家參考下本文
    2018-05-05
  • vue2.0+vuex+localStorage代辦事項應(yīng)用實現(xiàn)詳解

    vue2.0+vuex+localStorage代辦事項應(yīng)用實現(xiàn)詳解

    本篇文章給大家分享了一個用vue2.0+vuex+localStorage代辦事項應(yīng)用實現(xiàn)的代碼過程,有興趣的朋友跟著參考學(xué)習(xí)下。
    2018-05-05

最新評論

镇原县| 平泉县| 屏东县| 承德市| 郓城县| 湖南省| 伊春市| 精河县| 全州县| 萨迦县| 卢氏县| 绵竹市| 阿拉善左旗| 广西| 兰考县| 德令哈市| 兰坪| 五莲县| 成安县| 梨树县| 绥宁县| 同仁县| 克东县| 尚义县| 礼泉县| 鲁山县| 建平县| 望城县| 芜湖县| 哈尔滨市| 辛集市| 望都县| 八宿县| 临沧市| 沙洋县| 泰和县| 密山市| 祥云县| 隆回县| 赤城县| 广饶县|