vue動態(tài)綁定組件子父組件多表單驗證功能的實現(xiàn)代碼

前端項目中經(jīng)常會下拉或者選項卡,如果通過if,else或者switch去判斷加載的話會產(chǎn)生大量冗余代碼和變量定義,而且都寫在一起后人很難維護(hù)。
Vue核心在于組件,如果有內(nèi)容通過選項卡或者下拉框切換用動態(tài)加載子組件最好不過。

如圖: selects文件夾中,index只負(fù)責(zé)公共數(shù)據(jù)(當(dāng)然公共數(shù)據(jù)也可以寫在其他文件,只留一個入口文件),而comp文件夾中的幾個組件則通過動態(tài)加載。
動態(tài)加載子組件:component
// 給下拉框綁定下拉列表的索引
<el-select v-model="value" placeholder="請選擇" style="float:left" @change="selectNum(value)">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
引入組件后放到一個數(shù)組內(nèi),通過控制對應(yīng)的索引達(dá)到加載組件的目的

// 加載組件:每次下拉框監(jiān)聽則給changValue新賦值,如果下拉options的value從0開始則綁定組件時不用-1 <component :is="componentName[changValue - 1]" ref="subjectChild" @isSubmit="getSubmit"></component>
子父組件表單一起驗證:
按鈕放在父組件內(nèi):
子組件:自定義驗證規(guī)則
data(){
const num = (rule, value, callback) => {
let num = /^\d+$/
if(!value){
return callback(new Error('數(shù)量不能為空'))
}else if(!num.test(value)){
return callback(new Error('數(shù)量必須為數(shù)字'))
}else{
callback()
}
}
const price = (rule, value, callback) => {
let num2 = /^\d+$/
if(!value){
return callback(new Error('單價不能為空'))
}else if(!num2.test(value)){
return callback(new Error('單價必須為數(shù)字'))
}else{
callback()
}
}
return{
// 驗證
apple:{
num: '',
price: '',
},
reg:{
num: [
{ validator: num, trigger: 'blur' }
],
price: [
{ validator: price, trigger: 'blur' }
]
}
}
// 驗證
submitForm(){
this.$refs.apple.validate((valid) => {
if(valid){
this.$emit('isSubmit',["subject",true])
}else{
this.$emit('isSubmit',["subject",false])
return false
}
})
}
父組件:
// 獲取子組件狀態(tài)
getSubmit(type){
this.isRule = type[1]
},
// 公共數(shù)據(jù)驗證
submitForm2(){
// 如果選中了子組件
if(this.changValue){
this.$refs.subjectChild.submitForm()
}
let _this = this
let p1 = new Promise((resolve, reject) => {
_this.$refs.ruleForm.validate((valid) => {
if(valid){
resolve()
}
})
})
if(_this.isRule){
Promise.all([p1]).then(() => {
console.log('正確')
})
.catch(() => {
console.log('錯誤')
})
}else{
console.log('錯誤')
}
},
總結(jié)
以上所述是小編給大家介紹的vue動態(tài)綁定組件子父組件多表單驗證功能的實現(xiàn)代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- vue使用Element組件時v-for循環(huán)里的表單項驗證方法
- Vue2.0表單校驗組件vee-validate的使用詳解
- vue組件表單數(shù)據(jù)回顯驗證及提交的實例代碼
- Vue表單類的父子組件數(shù)據(jù)傳遞示例
- 詳解vue表單驗證組件 v-verify-plugin
- Vue form表單動態(tài)添加組件實戰(zhàn)案例
- 使用form-create動態(tài)生成vue自定義組件和嵌套表單組件
- vue2.0數(shù)據(jù)雙向綁定與表單bootstrap+vue組件
- 利用Vue v-model實現(xiàn)一個自定義的表單組件
- vue懸浮表單復(fù)合組件開發(fā)詳解
相關(guān)文章
Vue中使用v-model雙向數(shù)據(jù)綁定select、checked等多種表單元素的方法
?v-model?指令可以用在表單?input、textarea?及?select?元素上創(chuàng)建雙向數(shù)據(jù)綁定,它會根據(jù)控件類型自動選取正確的方法來更新元素,本文給大家介紹Vue中如何使用v-model雙向數(shù)據(jù)綁定select、checked等多種表單元素,感興趣的朋友一起看看吧2023-10-10
vue項目打包并部署到Linux服務(wù)器的詳細(xì)過程
我們在會開發(fā)項目的同時,也應(yīng)該了解一下項目是如何部署到服務(wù)器的,下面這篇文章主要給大家介紹了關(guān)于vue項目打包并部署到Linux服務(wù)器的相關(guān)資料,需要的朋友可以參考下2023-01-01
Vue實現(xiàn)左右菜單聯(lián)動實現(xiàn)代碼
這篇文章主要介紹了Vue實現(xiàn)左右菜單聯(lián)動實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
vue中如何使用echarts和echarts-gl實現(xiàn)3D餅圖環(huán)形餅圖
現(xiàn)在vue是很多公司前端的主流框架,我目前所在公司接觸的項目也都是使用vue來實現(xiàn)的,很少有完全使用原生的JavaScript來寫項目的了,下面這篇文章主要給大家介紹了關(guān)于vue中如何使用echarts和echarts-gl實現(xiàn)3D餅圖環(huán)形餅圖的相關(guān)資料,需要的朋友可以參考下2023-03-03
vue-cli3.0如何使用prerender-spa-plugin插件預(yù)渲染
這篇文章主要介紹了vue-cli3.0如何使用prerender-spa-plugin插件預(yù)渲染,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
vue.js實現(xiàn)的經(jīng)典計算器/科學(xué)計算器功能示例
這篇文章主要介紹了vue.js實現(xiàn)的經(jīng)典計算器/科學(xué)計算器功能,具有基本四則運算計算器以及科學(xué)計算器的功能,可實現(xiàn)開方、乘方、三角函數(shù)以及公式運算等功能,需要的朋友可以參考下2018-07-07

