中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue如何生成一個動態表單

發布時間:2022-10-14 11:10:16 來源:億速云 閱讀:179 作者:iii 欄目:開發技術

今天小編給大家分享一下Vue如何生成一個動態表單的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

數據接口設計

預備創建表單接口(其中字段解釋說明):

自我

名字

類型

標題

提示消息(_ m)

選擇對象

{

代碼' :0,

msg': '成功,

數據' :{

list':[{

id':10,

名稱:'check_type  ',

鍵入:'select_item  ',

標題' : '審核類型,

prompt_msg': '請填寫審核類型,

selectObj':[{

id':1,

項目' : '預審核'

},{

id':2,

項目' : '患者審核'

}],

val':null,

等級' :0

},{

id':16,

姓名:'bank_branch_info  ',

鍵入' : '字符串,

標題' : '支行信息,

prompt_msg': '請填寫支行信息,

selectObj':null,

val':null,

等級' :0

},{

id':19,

名稱: '項目_內容',

類型' : '多重,

標題' : '項目內容,

prompt_msg': '請填寫項目內容,

selectObj':null,

val':null,

等級' :0

},{

id':22,

名稱:'project_extension_time  ',

鍵入' : '整數,

標題' : '項目延長時間,

prompt_msg': '請填寫項目延長時間,

selectObj':null,

val':null,

等級' :0

},{

id':24,

名稱' : '圖像,

鍵入' : '圖像,

標題' : '圖片,

prompt_msg': '請上傳圖片,

selectObj':null,

val':null,

等級' :0

}]

}

}通過Vue動態組件渲染表單

現在預備創建表單接口文檔都了,該怎么渲染動態表單呢?動態表單的元素類型有5類,按照這個類別創建五個元素組件。

1. 上傳圖片組件

上傳圖片組件這里使用了上傳者組件。

模板

divclass='defaultimages  '

div  class='標簽“{ item。title  } }/div

div  v-if='項。val==' null  ' class=' content  '

上傳者

:max-num='8 '

:user-imgs='project_image  '

@change='onUploadProject  '

/

/div

div-elseclass=' img-wrap  ' g

t; <imgv-for="(it,idx)initem.val":src="it":key="idx"@click="preview(idx,item.val)"> </div> </div> </template>

2. 多行輸入框組件

默認多行輸入框為3行

<template>
<divv-if="item"class="defaultmultiple">
<divclass="lable">{{item.title}}</div>
<template>
<textarea
rows="3"
:placeholder="item.prompt_msg"
v-model="value"
:value="it.item">
</template>
</div>
</template>

3. 下拉選擇框組件

使用了element-ui的el-select

<template>
<divv-if="item"class="defaultselect_item">
<divclass="lableselect-lable">{{item.title}}</div>
<divclass="content">
<el-select
v-model="value"
placeholder="請選擇類型"
class="el-select-wrap"
size="mini"
@change="onChangeFirstValue"
>
<el-option
v-for="itinitem.selectObj"
:key="it.id"
:label="it.item"
:value="it.item">
</el-option>
</el-select>
</div>
</div>
</template>

其它兩個數字單行輸入框組件、文本單輸入框組件跟多行輸入框組件類似。

組件都創建好了,為了方便統一管理這些自定義組件。將組件們引入再導出,通過export default復合的形式。

//單行文本輸入框組件
export{defaultasString}from'./string.vue'
//單行數字輸入框組件
export{defaultasInteger}from'./integer.vue'
//多行文本輸入框組件
export{defaultasMultiple}from'./multiple.vue'
//下拉列表選擇器組件
export{defaultasSelect_item}from'./select_item.vue'
//上傳圖片組件
export{defaultasImages}from'./images.vue'

再動態表單頁面統一引入,以Vue動態組件的形式進行渲染,is 屬性為動態組件名。

<template>
<divclass="g-container">
<component
v-for="(item,number)infreedomConfig"
:key="item.name"
:is="item.type"
:item="item"
:number="number"
@changeComponent="changeComponentHandle"
></component>
</div>
</template>
<script>
import*asitemElementsfrom'../../components/itemElement'
exportdefault{
components:itemElements,
}
</script>

上面完成后,動態表單展現出來了。表單是動態生成的,如何進行表單驗證,和表單數據的匯總呢?

表單數據匯總

再動態渲染組件的,傳入了number 參數,這個參數用來標識當前組件位于動態表單的第幾個,方便后期填入數據后,進行數據保存。

默認value屬性值為空,對value進行監聽,當value變動的時 候進行emit,告訴父組件數據變更了,請保存。

data(){
return{
value:''
}
},
watch:{
value(v,o){
this.throttleHandle(()=>{
this.$emit('changeComponent',{
number:this.number,
value:this.$data.value
})
})
}
},

但是數據保存到哪里?怎么保存呢? 讓后端給一個表單全部字段的接口,取到數據存到data中,每次數據更新就去查找是否存在這個字段,有的話就賦值保存起來。后面提交的時候,就提交這個對象。

表單校驗

提交的時候,希望用戶能夠把表單填完再調用提交接口,需要前端校驗是否填完沒有的話,就給響應的toast請提示,阻止表單提交。

this.checkFrom(freedomConfig,preWordorderData).then(canSubmit=>{
canSubmit&&postSubmitWorkorder(preWordorderData).then(res=>{
if(res.code===0){
showLoading()
this.$router.push(`/detail/${res.data.id}`)
}
})
})

checkFrom 為我們的校驗方法,循環遍歷預創建表單,從data里查看該字段是否有值,沒有的話就給于toast提示。并返回一個promise,resolve(false) 。如果都校驗通過返回resolve(true) 。這樣就可以使checkFrom成為一個異步函數。

其中需要注意的是下拉框選擇后的值為大于0的數字、上傳圖片的屬性值是數組。一個動態表單的創建、校驗、數據整合就完成了。很多時候需要寫大量代碼的場景思路上很簡單,反倒是抽象一個組件需要考慮的更多。

以上就是“Vue如何生成一個動態表單”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

虹口区| 剑川县| 平阳县| 九寨沟县| 邯郸市| 蒙山县| 三亚市| 安国市| 合阳县| 潮安县| 三都| 永登县| 黄冈市| 洪洞县| 合江县| 逊克县| 陆丰市| 凌海市| 黎城县| 新邵县| 西藏| 河南省| 双柏县| 德州市| 黎平县| 思茅市| 措美县| 开远市| 高要市| 崇义县| 兴和县| 遵义市| 东阿县| 二手房| 昌平区| 富裕县| 景谷| 黎平县| 犍为县| 郯城县| 乌鲁木齐市|