日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

View UI (iview)动态表单 使用教程

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 View UI (iview)动态表单 使用教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

View UI,即原先的 iView,從 2019 年 10 月起正式更名為 View UI,并使用全新的 Logo

本文介紹 View UI (iview)動態表單的使用。在項目開發中,有些數據的數量是動態的,不確定的,可能是1條,也可能是多條。如人的證件,工作經歷,項目經驗等。在做這些數據的添加時就要使用動態表單

1、使用介紹

首先將 iview 官方的動態表單的代碼全部復制出來,粘貼到項目里,看一下運行效果

代碼如下

<template><Form ref="formDynamic" :model="formDynamic" :label-width="80" style="width: 300px"><FormItemv-for="(item, index) in formDynamic.items"v-if="item.status":key="index":label="'Item ' + item.index":prop="'items.' + index + '.value'":rules="{required: true, message: 'Item ' + item.index +' can not be empty', trigger: 'blur'}"><Row><Col span="18"><Input type="text" v-model="item.value" placeholder="Enter something..."></Input></Col><Col span="4" offset="1"><Button @click="handleRemove(index)">Delete</Button></Col></Row></FormItem><FormItem><Row><Col span="12"><Button type="dashed" long @click="handleAdd" icon="md-add">Add item</Button></Col></Row></FormItem><FormItem><Button type="primary" @click="handleSubmit('formDynamic')">Submit</Button><Button @click="handleReset('formDynamic')" style="margin-left: 8px">Reset</Button></FormItem></Form> </template> <script>export default {data () {return {index: 1,formDynamic: {items: [{value: '',index: 1,status: 1}]}}},methods: {handleSubmit (name) {this.$refs[name].validate((valid) => {if (valid) {this.$Message.success('Success!');} else {this.$Message.error('Fail!');}})},handleReset (name) {this.$refs[name].resetFields();},handleAdd () {this.index++;this.formDynamic.items.push({value: '',index: this.index,status: 1});},handleRemove (index) {this.formDynamic.items[index].status = 0;}}} </script>

?代碼講解

這里核心的內容是vue data中定義的 formDynamic 這個對象,這個對象的 items 數組表示動態表單里的內容,如果items中有1個對象,則表示默認頁面上會有1個輸入框,示例代碼就是默認1個輸入框

items中的內容示例給了3個,value表示輸入框的值,讀者可根據自己的需求添加頁面元素,并在data中進行添加元素對應的值;index是每一項的序號,示例是從1開始,如果項目不需要可以去掉這個index;status 是顯示的控制,通過分析添加和刪除的代碼示例,可以知道status= 1是顯示,status=0是不顯示,示例給出的刪除只是刪除了頁面顯示,實際 items數組里的數據并沒有刪除,因此讀者在開發時要在刪除的方法?handleRemove 中,刪除對應在items數組中的值

2、擴展

在實際開發中,可能出現同一form表單中有多個動態表單的情況,這里需要注意一點,就是 vue 的 for 循環的 key 的問題

先看代碼

<template><Form ref="formDynamic" :model="formDynamic" :label-width="80" style="width: 300px"><FormItemv-for="(item, index) in formDynamic.items"v-if="item.status":key="index":label="'Item ' + item.index":prop="'items.' + index + '.value'":rules="{required: true, message: 'Item ' + item.index +' can not be empty', trigger: 'blur'}"><Row><Col span="18"><Input type="text" v-model="item.value" placeholder="Enter something..."></Input></Col><Col span="4" offset="1"><Button @click="handleRemove(index)">Delete</Button></Col></Row></FormItem><FormItem><Row><Col span="12"><Button type="dashed" long @click="handleAdd" icon="md-add">Add item</Button></Col></Row></FormItem><FormItemv-for="(item, index) in formDynamic.items2"v-if="item.status":key="index":label="'Item ' + item.index":prop="'items2.' + index + '.value'":rules="{required: true, message: 'Item ' + item.index +' can not be empty', trigger: 'blur'}"><Row><Col span="18"><Input type="text" v-model="item.value" placeholder="Enter something..."></Input></Col><Col span="4" offset="1"><Button @click="handleRemove2(index)">Delete</Button></Col></Row></FormItem><FormItem><Row><Col span="12"><Button type="dashed" long @click="handleAdd2" icon="md-add">Add item</Button></Col></Row></FormItem><FormItem><Button type="primary" @click="handleSubmit('formDynamic')">Submit</Button><Button @click="handleReset('formDynamic')" style="margin-left: 8px">Reset</Button></FormItem></Form> </template> <script>export default {data () {return {index: 1,index2: 1,formDynamic: {items: [{value: '',index: 1,status: 1}],items2: [{value: '',index: 1,status: 1}]}}},methods: {handleSubmit (name) {this.$refs[name].validate((valid) => {if (valid) {this.$Message.success('Success!');} else {this.$Message.error('Fail!');}})},handleReset (name) {this.$refs[name].resetFields();},handleAdd () {this.index++;this.formDynamic.items.push({value: '',index: this.index,status: 1});},handleRemove (index) {this.formDynamic.items[index].status = 0;},handleAdd2 () {this.index2++;this.formDynamic.items2.push({value: '',index: this.index2,status: 1});},handleRemove2 (index) {this.formDynamic.items2[index].status = 0;}}} </script>

這里筆者添加了items2這個數組,并添加了它的添加和刪除的方法

運行效果如下

?這里在功能上沒有問題,但是打開瀏覽器的開發者工具就會看到有1個警告

為什么會產生這個警告呢?原因是這樣的,items 和 items2 在?v-for 進行遍歷時,都使用 index 作為 key,而 index 都是0,所有產生了這個警告

那么如何解決呢?其實很簡單,只要不使用相同的 key 就行了,這里可以自定義一個id,用id來作為 key,代碼實現如下

<template><Form ref="formDynamic" :model="formDynamic" :label-width="80" style="width: 300px"><FormItemv-for="(item, index) in formDynamic.items"v-if="item.status":key="index":label="'Item ' + item.index":prop="'items.' + index + '.value'":rules="{required: true, message: 'Item ' + item.index +' can not be empty', trigger: 'blur'}"><Row><Col span="18"><Input type="text" v-model="item.value" placeholder="Enter something..."></Input></Col><Col span="4" offset="1"><Button @click="handleRemove(index)">Delete</Button></Col></Row></FormItem><FormItem><Row><Col span="12"><Button type="dashed" long @click="handleAdd" icon="md-add">Add item</Button></Col></Row></FormItem><FormItemv-for="(item, index) in formDynamic.items2"v-if="item.status":key="item.id":label="'Item ' + item.index":prop="'items2.' + index + '.value'":rules="{required: true, message: 'Item ' + item.index +' can not be empty', trigger: 'blur'}"><Row><Col span="18"><Input type="text" v-model="item.value" placeholder="Enter something..."></Input></Col><Col span="4" offset="1"><Button @click="handleRemove2(index)">Delete</Button></Col></Row></FormItem><FormItem><Row><Col span="12"><Button type="dashed" long @click="handleAdd2" icon="md-add">Add item</Button></Col></Row></FormItem><FormItem><Button type="primary" @click="handleSubmit('formDynamic')">Submit</Button><Button @click="handleReset('formDynamic')" style="margin-left: 8px">Reset</Button></FormItem></Form> </template> <script>export default {data () {return {index: 1,index2: 1,formDynamic: {items: [{value: '',index: 1,status: 1}],items2: [{value: '',index: 1,status: 1,id: 'items2_id_' + 1}]}}},methods: {handleSubmit (name) {this.$refs[name].validate((valid) => {if (valid) {this.$Message.success('Success!');console.log(JSON.stringify(this.formDynamic))} else {this.$Message.error('Fail!');}})},handleReset (name) {this.$refs[name].resetFields();},handleAdd () {this.index++;this.formDynamic.items.push({value: '',index: this.index,status: 1});},handleRemove (index) {this.formDynamic.items[index].status = 0;},handleAdd2 () {this.index2++;let id = 'items2_id_' + this.index2this.formDynamic.items2.push({value: '',index: this.index2,status: 1,id: id});},handleRemove2 (index) {this.formDynamic.items2[index].status = 0;}}} </script>

上面代碼筆者實現了自定義 id 的添加,以字符串?items2_id_ 為前綴,加上數字組成 id,讀者可根據自己的業務進行自定義命名前綴,道理是相同的

運行效果如下

?沒有了警告

至此完

總結

以上是生活随笔為你收集整理的View UI (iview)动态表单 使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费在线视频你懂的 | 在线观看污 | 天天做天天射 | 五月天视频网 | 久久久久网站 | 美女又爽又黄免费视频 | 国产一区二区精品在线 | 无码人妻av一区二区三区波多野 | 色批网站 | 中文字幕88页| 国产ts丝袜人妖系列视频 | 久久婷香 | 成人性生活免费视频 | 美女av免费| 丰满人妻一区二区三区免费视频 | 欧美女优在线观看 | av大片免费观看 | 青青成人在线 | 国产成人无码久久久精品天美传媒 | 星空无限mv国产剧入选 | 99视频网站 | 中文字幕人妻色偷偷久久 | 成人在线你懂的 | 亚洲日日夜夜 | 四虎影院免费视频 | 五月婷在线观看 | 欧美乱大交xxxxx潮喷l头像 | 三级影片在线免费观看 | 男人插女人网站 | 欧美手机在线观看 | 国产福利免费观看 | 日韩精品一区二区三区在线播放 | 久久久久久九九 | 91精品福利视频 | a三级黄色片 | 欧美视频一区 | 国产极品视频在线观看 | 欧美激情18| 麻豆av一区二区三区久久 | 精品人妻一区二区三区久久夜夜嗨 | 男人在线视频 | 亚洲视频一二三区 | 国产碰碰| 精品日韩视频 | 黄网站色视频免费观看 | 精品国产免费视频 | 午夜性刺激免费视频 | 久久久久久久综合色一本 | 91热在线 | 久久精品国产亚洲av久 | 超碰人人做 | 91日韩在线 | 日韩精品视频一区二区在线观看 | 在线播放中文字幕 | 男人的天堂av片 | 中文字幕Av日韩精品 | 国产粉嫩呻吟一区二区三区 | 欧美波霸影院 | 日韩精品1| 探花视频在线免费观看 | 女女h百合无遮涩涩漫画软件 | 自拍99页 | 中文有码视频 | 一级特黄色 | 青青视频免费 | 国产黑丝视频 | 高清国产在线 | a天堂资源在线观看 | 性免费视频 | 手机在线中文字幕 | 国产精品999久久久 在线青草 | 污污动态图| 国精品无码人妻一区二区三区 | 国产一级理论片 | 久久久香蕉视频 | 日本老妇高潮乱hd | 中国挤奶哺乳午夜片 | 成人少妇影院yyyy | 天天操免费视频 | 国产不卡精品视频 | 国产又爽又黄免费软件 | 国产经典一区 | av网址观看| 色干干| 久久在线观看 | 亚欧乱色 | 精品国产免费av | 亚洲涩涩图 | 欧美丰满一区二区免费视频 | 中文二区 | 探花av在线 | 少妇高潮一区二区三区喷水 | 久久久久久久久久久久久久久久久 | 色骚网 | 亚洲午夜毛片 | 午夜黄色福利视频 | 丝袜在线视频 | 超碰激情 | 欧美成人精品欧美一级私黄 |