在form表單中點(diǎn)擊添加dom元素



需求
:在form表單中點(diǎn)擊可以添加dom元素,如下圖

思路:使用數(shù)字循環(huán),點(diǎn)擊之后數(shù)字加1,實(shí)現(xiàn)元素的添加。data中定義其變量的時(shí)候,將其定義為數(shù)組

<div?v-for="index?of?internetNum"?:key="`${index}A`">
?????<el-row>
????????<el-col?:span="8">
?????????????<el-form-item?:label="`網(wǎng)卡${index}`">
????????????????<el-input?v-model="form.cards.name[index-1]"?placeholder="請(qǐng)輸入"/>
?????????????</el-form-item>
? ? ? ? </el-col>
????????<el-col?v-if="index?===?1"?:span="8">
?????????????<svg-icon?icon-class="addMore" @click="num?=?num?+1"/>
????????</el-col>
????</el-row>
????<el-row>
????????<el-col?:span="8">
????????????<el-form-item?:label="`MAC${index}`">
????????????????<el-input?v-model="form.cards.mac[index-1]"?placeholder="請(qǐng)輸入"/>
?????????????</el-form-item>
????????</el-col>
????????<el-col?:span="8">
????????????<el-form-item?:label="`IP${index}`">
????????????????<el-input?v-model="form.cards.ip[index-1]"?placeholder="請(qǐng)輸入"/>
????????????</el-form-item>
????????</el-col>
????????<el-col?:span="8">
?????????????<el-form-item?:label="`掩碼${index}`">
????????????????<el-input?v-model="form.cards.mask[index-1]"?placeholder="請(qǐng)輸入"/>
?????????????</el-form-item>
????????</el-col>
? ? ? </el-row>
</div>

data(){
? ? return{
? ??????internetNum:1,
? ? ? ? form:{
? ? ? ? ? ? cards:{
? ? ? ? ? ? ? ? name:[],
? ? ? ? ? ? ? ? mac:[],
? ? ? ? ? ? ? ? ip:[],
? ? ? ? ? ? ? ? mask:[]
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
index?of?3? ?數(shù)字循環(huán)
:label="`IP${index}`"? ?
form.cards.ip[index-1]

最后在清空form表單的時(shí)候遇到一個(gè)問題:使用?this.$refs[formName].resetFields()無法清空cards中的數(shù)據(jù),嘗試添加上props 但是無效,最后使用最傻的辦法,手動(dòng)置空,如下:
this.form.cards?=?{
????name:?[],
? ? mac:?[],
????ip:?[],
????mask:?[]
?}


后期優(yōu)化:

首先將數(shù)據(jù)結(jié)構(gòu)優(yōu)化入下:
this.form.cards?= [{
? ? name:'',
? ? mac:'',
? ? ip:'',
? ? mask:''
}]

代碼:
<div?v-for="(item,index) of?form.cards"?:key="`${index}A`">
????<el-row>
????????<el-col?:span="8">
????????????<el-form-item?:label="`網(wǎng)卡${index+1}`">
????????????????<el-input?v-model="form.cards[index].name"?placeholder="請(qǐng)輸入"/>
????????????</el-form-item>
? ? ? ? </el-col>
????????<el-col?v-if="index?===?0"?:span="8">
????????????<svg-icon?icon-class="addMore" @click="addItem"/>
????????</el-col>
? ??????<el-col?v-if="index?!==?0"?:span="8">
?????????????<svg-icon?icon-class="reduceOne" @click="reduceItem(index)"/>
????????</el-col>
????</el-row>

????<el-row>
????????<el-col?:span="8">
?????????????<el-form-item?:label="`MAC${index}`">
?????????????????<el-input?v-model="form.cards[index].mac"?placeholder="請(qǐng)輸入"/>
?????????????</el-form-item>
? ? ? ? </el-col>
????????<el-col?:span="8">
?????????????<el-form-item?:label="`IP${index}`">
? ? ? ? ? ? ? ? <el-input?v-model="form.cards[index].ip"?placeholder="請(qǐng)輸入"/>
????????????</el-form-item>
? ? ? ? </el-col>
????????<el-col?:span="8">
????????????<el-form-item?:label="`掩碼${index}`">
????????????????<el-input?v-model="form.cards[index].mask"?placeholder="請(qǐng)輸入"/>
????????????</el-form-item>
????????</el-col>
????</el-row>
</div>

methods:{
? ??addItem(){? // 增加一個(gè)元素
? ? ? ? this.form.cards.push({
? ??????????name:'',
????????????mac:'',
????????????ip:'',
????????????mask:''
????????})
? ? },
? ??reduceItem(index){ //減少一個(gè)元素
? ??????this.form.cards.splice(index,1)
? ? }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容