ElementUI中<el-form>標(biāo)簽中ref、:model、:rules的作用淺析
首先看一下代碼
<el-form ref="loginForm" :model="loginInfo" :rules="loginRules" class="login-form" auto-complete="on" label-position="left" >
ref 屬性涉及Dom 元素的獲取(el-form表單對(duì)象)。
javaSrcipt 獲取Dom 元素是通過(guò):document.querySelector(".input")
獲取dom元素節(jié)點(diǎn) 。
Vue 為簡(jiǎn)化DOM獲取方法提出了ref
屬性和$refs
對(duì)象。一般的操作流程是:ref
綁定控件,$refs
獲取控件。
Element官方文檔中寫到:
model
是表單數(shù)據(jù)對(duì)象,rules
是表單驗(yàn)證規(guī)則。
Form 組件提供了表單驗(yàn)證的功能,只需要通過(guò) rules
屬性傳入約定的驗(yàn)證規(guī)則,并將 Form-Item 的 prop
屬性設(shè)置為需校驗(yàn)的字段名即可。
里面的邏輯大概是,在el-form-item上寫一個(gè)prop
,這個(gè)prop
左手對(duì)應(yīng)著數(shù)據(jù)源(即用model.prop
找到對(duì)應(yīng)的數(shù)據(jù)源),右手對(duì)應(yīng)著驗(yàn)證規(guī)則(即用rules.prop
找到對(duì)應(yīng)的規(guī)則),然后進(jìn)行驗(yàn)證。
補(bǔ)充:注意點(diǎn)
- :model的數(shù)據(jù)屬性和:rules的屬性相對(duì)應(yīng)
- 一個(gè)el-form-item中有多個(gè)輸入框,每個(gè)輸入框都需要單獨(dú)嵌套在el-form-item中,此操作可以單獨(dú)校驗(yàn)每個(gè)輸入框
- 日期類型的數(shù)據(jù),校驗(yàn)要指定type:'date'
- 選擇框的value為數(shù)值,校驗(yàn)需要指定type:'number'
- 單選按鈕和多選按鈕為數(shù)值,校驗(yàn)需要指定type:'number'
- 輸入框想要轉(zhuǎn)換成為數(shù)值類型,可以使用v-model.number,校驗(yàn)需要指定type:number'
- 輸入框想要校驗(yàn)郵箱格式,只需要指定type:'email'
- 嵌套在el-input中的el-select不能實(shí)現(xiàn)聯(lián)動(dòng)校驗(yàn),若想實(shí)現(xiàn)聯(lián)動(dòng)校驗(yàn),需要@change自定義調(diào)用校驗(yàn)
- rules的簡(jiǎn)單校驗(yàn)有三個(gè)屬性:required,message,trigger,分別為:是否必填,校驗(yàn)失敗提示信息,校驗(yàn)時(shí)機(jī)
- 如果要自定義校驗(yàn)規(guī)則,需要屬性validator:(rule,value,callback)=>{手動(dòng)校驗(yàn)代碼塊},rule參數(shù)數(shù)據(jù)很豐富,為一個(gè)Object類型的數(shù)據(jù),有field,type,validator,required等屬性,value為:model屬性的值,callback(str)為要返回的信息
- 單選框,多選框,日期框,選擇框的校驗(yàn)時(shí)機(jī)都應(yīng)該指定為change,符合業(yè)務(wù)場(chǎng)景
- 動(dòng)態(tài)添加或刪除form表單的組件,需要?jiǎng)討B(tài)配置好label,prop,rule的數(shù)據(jù),刪除按鈕需要注意代碼let index = array.indexOf(item)和array.splice(index,1)
- 重置按鈕:this.$refs['refName'].resetFields();,清空了校驗(yàn),表單數(shù)據(jù)也恢復(fù)初始值
- 校驗(yàn)單個(gè)組件:this.$refs['refName'].validateField('propName');進(jìn)行了單個(gè)校驗(yàn)
- 校驗(yàn)全部:this.$refs['refName'].validate(valid=>{});表單整體校驗(yàn),一般提交按鈕需要觸發(fā)全部校驗(yàn)
總結(jié)
到此這篇關(guān)于ElementUI中<el-form>標(biāo)簽中ref、:model、:rules的作用淺析的文章就介紹到這了,更多相關(guān)el-form標(biāo)簽中ref、:model、:rules作用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3.2+ts實(shí)現(xiàn)在方法中可調(diào)用的擬態(tài)框彈窗(類el-MessageBox)
這篇文章主要介紹了vue3.2+ts實(shí)現(xiàn)在方法中可調(diào)用的擬態(tài)框彈窗(類el-MessageBox),這個(gè)需求最主要的是要通過(guò)方法去調(diào)用,為了像el-messagebox使用那樣方便,需要的朋友可以參考下2022-12-12vue做移動(dòng)端適配最佳解決方案(親測(cè)有效)
這篇文章主要介紹了vue做移動(dòng)端適配最佳解決方案(親測(cè)有效),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09vue實(shí)現(xiàn)動(dòng)態(tài)控制el-table表格列的展示與隱藏
這篇文章主要介紹了vue實(shí)現(xiàn)動(dòng)態(tài)控制el-table表格列的展示與隱藏,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04詳解vue2和vue3如何定義響應(yīng)式數(shù)據(jù)
這篇文章主要是來(lái)和大家一起討論一下vue2和vue3是如何定義響應(yīng)式數(shù)據(jù)的,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解下2023-11-11如何在Vue3和Vite項(xiàng)目中用SQLite數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ)
SQLite是一種嵌入式關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),是一個(gè)零配置、無(wú)服務(wù)器的、自給自足的、事務(wù)性的SQL數(shù)據(jù)庫(kù)引擎,這篇文章主要給大家介紹了關(guān)于如何在Vue3和Vite項(xiàng)目中用SQLite數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ)的相關(guān)資料,需要的朋友可以參考下2024-03-03vue項(xiàng)目history模式下部署子路由跳轉(zhuǎn)失敗的解決
這篇文章主要介紹了vue項(xiàng)目history模式下部署子路由跳轉(zhuǎn)失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03