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

實現(xiàn)elementUI表單的全局驗證的方法步驟

 更新時間:2019年04月29日 09:39:58   投稿:zx  
這篇文章主要介紹了實現(xiàn)elementUI表單的全局驗證的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

使用ElementUi搭建框架的時候,大家應該都有考慮過怎么做全局驗證,畢竟復制粘貼什么的是最煩了,這里分享下個人的解決方法。

驗證規(guī)則

分析規(guī)則

一般驗證規(guī)則,主要是是否必填,不為空,以及參數(shù)類型的驗證。 基于這個條件,我們開始找找思路, 單個字段的驗證是這樣的:

name: {
 required: 是否必填,
 validator: 自定義規(guī)則,
 message: 失敗提示消息(非自定義時觸發(fā)),
 trigger: 觸發(fā)方式
}

循環(huán)實現(xiàn)

固定的規(guī)則。當一個東西固定之后,那必然是可以重復使用的,并且可以快速生成,我們可以用循環(huán)來實現(xiàn)它。 但是用循環(huán)來實現(xiàn),我們則需要一個數(shù)據(jù)規(guī)則。

定義數(shù)據(jù)規(guī)則

分析下需要的字段,大概就是以下幾種,其他的可以根據(jù)自身的需求去增加:

  • 驗證的字段名 label
  • 驗證的值 value
  • 驗證的類型 type
  • 是否必填 required
  • 自定義規(guī)則 validator

那最終我們得到的是這樣一個字段配置列表:

fieldList: [
   {label: '賬號', value: 'account', type: 'input', required: true, validator: checkAccount},
   {label: '密碼', value: 'password', type: 'password', required: true, validator: checkPwd},
   {label: '昵稱', value: 'name', type: 'input', required: true},
   {label: '性別', value: 'sex', type: 'select', list: 'sexList', required: true},
   {label: '頭像', value: 'avatar', type: 'slot', className: 'el-form-block'},
   {label: '手機號碼', value: 'phone', type: 'input', validator: checkPhone},
   {label: '微信', value: 'wechat', type: 'input', validator: checkWechat},
   {label: 'QQ', value: 'qq', type: 'input', validator: checkQQ},
   {label: '郵箱', value: 'email', type: 'input', validator: checkEmail},
   {label: '描述', value: 'desc', type: 'textarea', className: 'el-form-block'},
   {label: '狀態(tài)', value: 'status', type: 'select', list: 'statusList', required: true}
  ]

form完整的字段配置建議參考:

  formInfo: {
  ref: null,
  data: {
   id: '', // *唯一ID
   account: '', // *用戶賬號
   password: '', // *用戶密碼
   name: '', // *用戶昵稱
   type: 2, // *用戶類型: 0: 手機注冊 1: 論壇注冊 2: 管理平臺添加
   sex: 0, // *性別: 0:男 1:女
   avatar: '', // 頭像
   phone: '', // 手機號碼
   wechat: '', // 微信
   qq: '', // qq
   email: '', // 郵箱
   desc: '', // 描述
   status: 1 // *狀態(tài): 0:停用,1:啟用(默認為1)',
   // create_user: '', // 創(chuàng)建人
   // create_time: '', // 創(chuàng)建時間
   // update_user: '', // 修改人
   // update_time: '' // 修改時間
  },
  fieldList: [
   {label: '賬號', value: 'account', type: 'input', required: true, validator: checkAccount},
   {label: '密碼', value: 'password', type: 'password', required: true, validator: checkPwd},
   {label: '昵稱', value: 'name', type: 'input', required: true},
   {label: '性別', value: 'sex', type: 'select', list: 'sexList', required: true},
   {label: '頭像', value: 'avatar', type: 'slot', className: 'el-form-block'},
   {label: '手機號碼', value: 'phone', type: 'input', validator: checkPhone},
   {label: '微信', value: 'wechat', type: 'input', validator: checkWechat},
   {label: 'QQ', value: 'qq', type: 'input', validator: checkQQ},
   {label: '郵箱', value: 'email', type: 'input', validator: checkEmail},
   {label: '描述', value: 'desc', type: 'textarea', className: 'el-form-block'},
   {label: '狀態(tài)', value: 'status', type: 'select', list: 'statusList', required: true}
  ],
  rules: {},
  labelWidth: '120px'
  }

實現(xiàn)驗證方法

一: 循環(huán)字段列表,根據(jù)type判斷是提示選擇不能為空,還是輸入不能為空
二:如果字段必填,則根據(jù)是否有自定義驗證去生成驗證規(guī)則
三: 字段非必填,有自定義規(guī)則生成驗證

 // 初始化驗證數(shù)據(jù)
 _initValidate (formInfo) {
  const obj = {},
  fieldList = formInfo.fieldList
  // 循環(huán)字段列表
  for (let item of fieldList) {
  let type = item.type === 'select' ? '選擇' : '輸入'
  if (item.required) {
   if (item.validator) {
   obj[item.value] = {
    required: item.required,
    validator: item.validator,
    trigger: 'blur'
   }
   } else {
   obj[item.value] = {
    required: item.required,
    message: '請' + type + item.label,
    trigger: 'blur'
   }
   }
  } else if (item.validator) {
   obj[item.value] = {
   validator: item.validator,
   trigger: 'blur'
   }
  }
  }
  formInfo.rules = obj
 }

使用

結(jié)合上面的字段設計,我在頁面上的使用是這樣的,大家可以根據(jù)自己的字段設計去修改,大致實現(xiàn)過程是這樣的

// mixin中的方法, 初始化字段驗證規(guī)則
this._initValidate(this.formInfo)

怎么配置到全局

  1. 通過mixin配置,然后在頁面中使用(個人使用的是mixin)
  2. 配置為全局方法在頁面中調(diào)用
  3. 掛在到vue實例上,通過this即可訪問

mixins例子

export default {
 data () {
 /**
  * 頁面上的可復用的驗證規(guī)則
  */
 // 驗證號碼格式
 const CHECK_PHONE = (rule, value, callback) => {
  let check = this.$validate({label: '號碼', value, rules: ['phone']})
  if (!check.result) {
  callback(new Error(check.message))
  } else {
  callback()
  }
 }
 // 驗證號碼格式以及不能為空
 const CHECK_PHONE_NOTNULL = (rule, value, callback) => {
  let check = this.$validate({label: '號碼', value, rules: ['notnull', 'phone']})
  if (!check.result) {
  callback(new Error(check.message))
  } else {
  callback()
  }
 }
 // 檢測郵箱格式
 const CHECK_EMAIL = (rule, value, callback) => {
  let check = this.$validate({label: '郵箱', value, rules: ['email']})
  if (!check.result) {
  callback(new Error(check.message))
  } else {
  callback()
  }
 }
 // 檢測郵箱格式以及不能為空
 const CHECK_EMAIL_NOTNULL = (rule, value, callback) => {
  let check = this.$validate({label: '郵箱', value, rules: ['notnull', 'email']})
  if (!check.result) {
  callback(new Error(check.message))
  } else {
  callback()
  }
 }
 return {
  CHECK_PHONE,
  CHECK_PHONE_NOTNULL,
  CHECK_EMAIL,
  CHECK_EMAIL_NOTNULL
 }
 },
 methods: {
 // 初始化驗證數(shù)據(jù)
 _initValidate (formInfo) {
  const obj = {},
  fieldList = formInfo.fieldList
  // 循環(huán)字段列表
  for (let item of fieldList) {
  let type = item.type === 'select' ? '選擇' : '輸入'
  if (item.required) {
   if (item.validator) {
   obj[item.value] = {
    required: item.required,
    validator: item.validator,
    trigger: 'blur'
   }
   } else {
   obj[item.value] = {
    required: item.required,
    message: '請' + type + item.label,
    trigger: 'blur'
   }
   }
  } else if (item.validator) {
   obj[item.value] = {
   validator: item.validator,
   trigger: 'blur'
   }
  }
  }
  formInfo.rules = obj
 }
 }
}

最后

在項目的系統(tǒng)管理模塊中可以看到示例代碼:

項目地址

項目代碼地址

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 前端Vue3項目打包成Docker鏡像運行的詳細步驟

    前端Vue3項目打包成Docker鏡像運行的詳細步驟

    將Vue3項目打包、編寫Dockerfile、構建Docker鏡像和運行容器是部署Vue3項目到Docker的主要步驟,這篇文章主要介紹了前端Vue3項目打包成Docker鏡像運行的詳細步驟,需要的朋友可以參考下
    2024-09-09
  • uni-app?開發(fā)微信小程序定位功能

    uni-app?開發(fā)微信小程序定位功能

    這篇文章主要介紹了uni-app?開發(fā)微信小程序定位,通過使用onLocationChange方法持續(xù)監(jiān)聽地址,根據(jù)定位精度字段判斷是否使用此次定位的經(jīng)緯度,需要的朋友可以參考下
    2022-04-04
  • ElementUI之Message功能拓展詳解

    ElementUI之Message功能拓展詳解

    這篇文章主要介紹了ElementUI之Message功能拓展詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • vue父組件值變化但子組件不刷新的三種解決方案

    vue父組件值變化但子組件不刷新的三種解決方案

    父組件傳遞給子組件的數(shù)據(jù),如果是一個復雜對象(例如一個數(shù)組或?qū)ο螅?那么子組件只會監(jiān)聽對象的引用而不是對象的內(nèi)容,這意味著當對象的內(nèi)容發(fā)生變化時,子組件不會更新,本文給大家介紹了vue子組件不刷新的三種解決方案,需要的朋友可以參考下
    2024-03-03
  • vue給對象添加屬性沒有響應式的問題及解決

    vue給對象添加屬性沒有響應式的問題及解決

    這篇文章主要介紹了vue給對象添加屬性沒有響應式的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue項目中canvas實現(xiàn)截圖功能

    vue項目中canvas實現(xiàn)截圖功能

    這篇文章主要為大家詳細介紹了vue項目中canvas實現(xiàn)截圖功能,截取圖片的一部分,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vue中input的v-model清空操作

    vue中input的v-model清空操作

    這篇文章主要介紹了vue中input的v-model清空操作,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • Vue input控件通過value綁定動態(tài)屬性及修飾符的方法

    Vue input控件通過value綁定動態(tài)屬性及修飾符的方法

    這篇文章主要介紹了 Vue input控件通過value綁定動態(tài)屬性及修飾符的方法,需要的朋友可以參考下
    2017-05-05
  • Vue2.0 組件傳值通訊的示例代碼

    Vue2.0 組件傳值通訊的示例代碼

    本篇文章主要介紹了Vue2.0 組件傳值通訊的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 在vue中獲取微信支付code及code被占用問題的解決方法

    在vue中獲取微信支付code及code被占用問題的解決方法

    這篇文章主要介紹了在vue中獲取微信支付code及code被占用問題的解決方法。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04

最新評論

拉萨市| 南和县| 理塘县| 紫金县| 六枝特区| 伊吾县| 咸阳市| 哈尔滨市| 隆昌县| 抚顺市| 兴山县| 龙里县| 吉木萨尔县| 淮滨县| 太保市| 二连浩特市| 海淀区| 六安市| 资阳市| 榆中县| 张家口市| 嫩江县| 临高县| 玛沁县| 大厂| 阿坝| 建瓯市| 兰州市| 崇左市| 沾益县| 廊坊市| 镇沅| 太谷县| 怀仁县| 房山区| 永平县| 荥经县| 靖江市| 彭水| 云林县| 商洛市|