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

溫馨提示×

溫馨提示×

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

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

如何使用Vue生成一個動態表單

發布時間:2022-04-18 17:28:41 來源:億速云 閱讀:490 作者:zzz 欄目:開發技術

這篇文章主要介紹了如何使用Vue生成一個動態表單的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇如何使用Vue生成一個動態表單文章都會有所收獲,下面我們一起來看看吧。

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生成一個動態表單”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“如何使用Vue生成一個動態表單”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

vue
AI

锡林郭勒盟| 裕民县| 安阳市| 高邮市| 个旧市| 琼海市| 上饶县| 桦川县| 和静县| 安庆市| 洛川县| 桂阳县| 融水| 清流县| 聂荣县| 定兴县| 安陆市| 松潘县| 吉木乃县| 黄骅市| 泰兴市| 微山县| 凌云县| 连平县| 都昌县| 高青县| 洮南市| 临湘市| 松原市| 银川市| 武冈市| 游戏| 酒泉市| 腾冲县| 闵行区| 榆社县| 六枝特区| 海伦市| 安顺市| 石河子市| 无为县|