最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue選擇下拉框動(dòng)態(tài)變化表單方式

 更新時(shí)間:2022年08月02日 10:01:20   作者:風(fēng)如也  
這篇文章主要介紹了vue選擇下拉框動(dòng)態(tài)變化表單方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue選擇下拉框動(dòng)態(tài)變化表單

場景

一個(gè)表單,在選擇某個(gè)下拉框時(shí),動(dòng)態(tài)添加選中該下拉框值對(duì)應(yīng)的輸入框或下拉框等。相當(dāng)于有部分輸入框或下拉框是動(dòng)態(tài)變化的。

? ? <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm">
? ? ? <el-form-item label="名稱" prop="name">
? ? ? ? <el-input v-model="ruleForm.name" maxLength="20" "></el-input>
? ? ? </el-form-item>
? ? ? <el-form-item label="方式" prop="type">
? ? ? ? <el-select v-model="ruleForm.type" placeholder="請(qǐng)選擇方式" style="width:100%;" @change="changeType" >
? ? ? ? ? <el-option v-for="(item, index) in typeList" :key="index" :label="item.name" :value="item.type"></el-option>
? ? ? ? </el-select>
? ? ? </el-form-item>
? ? ? <template v-for="(item, index) in Object.keys(ruleForm.info)">
? ? ? ? <el-form-item v-if="getNameByOptions(item)" :label="getNameByKey(item)" :prop="`info.${item}`" :key="index"
? ? ? ? ? :rules="{ required: true, message: `${getNameByKey(item)}不能為空`, trigger: 'change' }">
? ? ? ? ? <el-select v-model="ruleForm.info[item]" :placeholder="`請(qǐng)選擇${getNameByKey(item)}`" style="width:100%;" >
? ? ? ? ? ? <el-option v-for="(ele, key) in getNameByOptions(item)" :key="key" :label="ele.label" :value="ele.value"></el-option>
? ? ? ? ? </el-select>
? ? ? ? </el-form-item>
? ? ? ? <el-form-item v-else :label="getNameByKey(item)" :prop="`info.${item}`" :key="index"
? ? ? ? :rules="{ required: true, message: `${getNameByKey(item)}不能為空`, trigger: 'blur' }">
? ? ? ? ? <el-input v-model="ruleForm.info[item]" maxLength="20"></el-input>
? ? ? ? </el-form-item>
? ? ? </template>
? ? </el-form>

注意

如果要驗(yàn)證動(dòng)態(tài)生成的表單,可以單獨(dú)添加 :rules="{ required: true, message:KaTeX parse error: Expected 'EOF', got '}' at position 46: …gger: 'change' }?"`。`prop` 要寫成對(duì)應(yīng)…{item}" 才會(huì)生效。

使用 Object.keys(ruleForm.info) 來遍歷是為了防止動(dòng)態(tài)生成的表單不具有唯一性,即輸入某一項(xiàng)值,其余輸入框也會(huì)填入相同的值。

? data() {
? ? return {
? ? ? ruleForm: {
? ? ? ? type: '',
? ? ? ? name: '',
? ? ? ? remark: '',
? ? ? ? info: {}
? ? ? },
? ? ? rules: {
? ? ? ? name: [
? ? ? ? ? { required: true, message: '請(qǐng)輸入名稱', trigger: 'blur' }
? ? ? ? ]
? ? ? },
? ? ? curForm: [],
? ? ? typeList: [] // 數(shù)據(jù)源類型
? ? }
? },
? methods: {
?? ?// 選擇不同的接入方式,輸出不同的輸入框
? ? changeType(val) {
? ? ? this.ruleForm.info = {}
? ? ? this.typeList.forEach(item => {
? ? ? ? if (item.type === val) {
? ? ? ? ? this.curForm = item.props
? ? ? ? }
? ? ? })
? ? ? this.curForm.forEach(item => {
? ? ? ? this.$set(this.ruleForm.info, item.field, '')
? ? ? })
? ? },
? ? ?// 根據(jù) key 獲取 label
? ? getNameByKey (key) {
? ? ? return this.curForm.find(item => item.field === key).label
? ? },
? ? // 根據(jù) key 獲取 options
? ? getNameByOptions (key) {
? ? ? return this.curForm.find(item => item.field === key).options
? ? }
? }

數(shù)據(jù)格式不同的話,學(xué)會(huì)靈活變換 

vue動(dòng)態(tài)增減表單項(xiàng)

如圖,實(shí)現(xiàn)以下效果

通過點(diǎn)擊新增就會(huì)新增一個(gè)表單,刪除會(huì)刪除最后一個(gè)表單,也可以指定刪除哪個(gè)表單

代碼實(shí)現(xiàn)

<el-form ref="shopArr" :model="shopArr" :rules="shopRules">
        <table v-for="(item,index) in shopArr" :key="index" class="addTableShop">
          <tr>
            <td class="addTable-td1"><div class="table-item"><el-form-item label="1:" prop="settledPlatfoem" label-width="120px" /></div></td>
            <td class="addTable-td2">
              <el-radio-group v-model="item.settledType">
                <el-radio :label="1">淘寶</el-radio>
                <el-radio :label="2">京東</el-radio>
                <el-radio :label="3">天貓</el-radio>
                <el-radio :label="4">拼多多</el-radio>
                <el-radio :label="5">其他
                  <input v-if="item.settledType === 5" v-model="item.settledPlatfoem" placeholder="請(qǐng)輸入其他平臺(tái)" style="width: 105px; margin-left: 10px"/>
                </el-radio>
              </el-radio-group>
            </td>
            <td class="addTable-td1"><div class="table-item"><el-form-item label="2:" prop="shopName" label-width="120px" /></div></td>
            <td class="addTable-td2"><el-input v-model="item.shopName" /></td>
          </tr>
          <tr>
            <td class="addTable-td1"><div class="table-item"><el-form-item label="3:" prop="shopUrl" label-width="120px" /></div></td>
            <td class="addTable-td2"><el-input v-model="item.shopUrl" /></td>
            <td class="addTable-td1"><div class="table-item"><el-form-item label="4:" prop="operatingLicense" label-width="120px" /></div></td>
            <td class="addTable-td2"><el-input v-model="item.operatingLicense" /></td>
          </tr>
        </table>
        <el-button type="text" style="float: right" size="small" @click="addShop">新增</el-button>
        <el-button type="text" style="float: right" size="small" @click="deleteShop">刪除</el-button>
      </el-form>

method中

	// 添加表單
    add() {
      const item = {
        settledType: '',
        settledPlatfoem: '',
        shopName: '',
        shopUrl: '',
        operatingLicense: ''
      }
      this.shopArr.push(item)
    },
    // 刪除表單
    deleteShop() {
      this.shopArr.splice(this.shopArr.length - 1, 1)
    },

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • vue動(dòng)態(tài)渲染svg、添加點(diǎn)擊事件的實(shí)現(xiàn)

    vue動(dòng)態(tài)渲染svg、添加點(diǎn)擊事件的實(shí)現(xiàn)

    這篇文章主要介紹了vue動(dòng)態(tài)渲染svg、添加點(diǎn)擊事件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • vue 之 .sync 修飾符示例詳解

    vue 之 .sync 修飾符示例詳解

    這篇文章主要介紹了vue 之 .sync 修飾符的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值 ,需要的朋友可以參考下
    2018-04-04
  • Vue組件設(shè)計(jì)-滾動(dòng)置頂設(shè)計(jì)案例

    Vue組件設(shè)計(jì)-滾動(dòng)置頂設(shè)計(jì)案例

    這篇文章主要介紹了Vue組件設(shè)計(jì)-滾動(dòng)置頂設(shè)計(jì)案例,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 如何解決npm i下載依賴的時(shí)候出現(xiàn)某依賴版本沖突

    如何解決npm i下載依賴的時(shí)候出現(xiàn)某依賴版本沖突

    這篇文章主要介紹了如何解決npm i 下載依賴的時(shí)候出現(xiàn)某依賴版本沖突問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vuex進(jìn)行Echarts數(shù)據(jù)頁面初始化后如何更新dom

    Vuex進(jìn)行Echarts數(shù)據(jù)頁面初始化后如何更新dom

    這篇文章主要為大家詳細(xì)介紹了使用Vuex做Echarts數(shù)據(jù)時(shí),當(dāng)頁面初始化后如何更新dom,文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • Vue動(dòng)態(tài)設(shè)置img的src不生效的問題解決

    Vue動(dòng)態(tài)設(shè)置img的src不生效的問題解決

    本文主要介紹了Vue動(dòng)態(tài)設(shè)置img的src不生效的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • vscode vue 文件模板的配置方法

    vscode vue 文件模板的配置方法

    這篇文章主要介紹了vscode vue 文件模板的配置方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 使用vscode格式化文檔無效的解決辦法(vue代碼格式化文檔無效)

    使用vscode格式化文檔無效的解決辦法(vue代碼格式化文檔無效)

    這篇文章主要給大家介紹了關(guān)于使用vscode格式化文檔無效的解決辦法,也就是vue代碼格式化文檔無效,這是最近突然遇到的一個(gè)問題,這里給大家介紹一下解決的辦法,需要的朋友可以參考下
    2023-08-08
  • Vue項(xiàng)目中實(shí)現(xiàn)無感Token刷新的示例

    Vue項(xiàng)目中實(shí)現(xiàn)無感Token刷新的示例

    在前端項(xiàng)目中,Token用于用戶認(rèn)證和權(quán)限管理,文章介紹了在Vue項(xiàng)目中實(shí)現(xiàn)Token的無感刷新,包括Token刷新的原理、攔截器的應(yīng)用和處理Token過期的方法,感興趣的可以了解一下
    2024-11-11
  • Vue封裝的組件全局注冊(cè)并引用

    Vue封裝的組件全局注冊(cè)并引用

    這篇文章主要為大家詳細(xì)介紹了Vue封裝的組件全局注冊(cè)并引用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07

最新評(píng)論

石首市| 中牟县| 玛曲县| 奉贤区| 万山特区| 阳东县| 台北县| 天津市| 康定县| 瓮安县| 白玉县| 平武县| 惠东县| 新乡市| 平南县| 五莲县| 江陵县| 漳州市| 阳原县| 石家庄市| 体育| 石台县| 古交市| 左贡县| 平武县| 崇仁县| 维西| 中江县| 阜阳市| 运城市| 桐梓县| 若尔盖县| 潍坊市| 赣州市| 镇沅| 五莲县| 高尔夫| 河源市| 霍林郭勒市| 文安县| 石屏县|