欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Vue里循環(huán)form表單項實例

 更新時間:2021年09月08日 08:59:02   作者:廣漂的明哥  
本文主要介紹了Vue里循環(huán)form表單項實例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

有的時候我們可能會遇到這種需求,用戶點擊某個按鈕就可以增加一個同樣的表單出來,點擊一次增加一次。然后要用到深拷貝,Vue.js+ElementUI等等。效果大概如下,就是一個表單有下拉框和兩個輸入框,現(xiàn)在點擊"添加表單"按鈕之后就會多一個表單出來,點擊"提交表單"后就同時提交兩個表單的value值。

在這里插入圖片描述

代碼如下:

<template>
  <div>
    <div style="margin: 10px 0">
      <el-button type="primary" @click="addForm">添加表單</el-button>
      <el-button type="primary" @click="submit">提交表單</el-button>
    </div>
    <div v-for="(item, index) in List" :key="index">
      <el-form ref="form" label-width="80px">
        <el-form-item label="直播平臺">
          <el-select
            v-model="item.platform"
            :key="index"
            placeholder="請選擇直播平臺"
          >
            <el-option
              :label="item2.platformName"
              v-for="(item2, index2) in platformNameList"
              :key="index2"
              :value="item2.platformValue"
            >
            </el-option>
          </el-select>
        </el-form-item>

        <el-form-item label="粉絲量">
          <el-input v-model="item.fanMount" :key="index"></el-input>
        </el-form-item>

        <el-form-item label="平臺ID">
          <el-input v-model="item.platformId" :key="index"></el-input>
        </el-form-item>
      </el-form>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      title: "巡查內(nèi)容頁",
      personObj: {
        platform: "",
        fanMount: "",
        platformId: "",
      },
      platformNameList: [
        {
          platformName: "快手",
          platformValue: "1",
        },
        {
          platformName: "抖音",
          platformValue: "2",
        },
        {
          platformName: "淘寶",
          platformValue: "3",
        },
      ],
      List: [
        {
          platform: "",
          fanMount: "",
          platformId: "",
        },
      ],
    };
  },

  methods: {
  //深拷貝
    cloneObj(obj) {
      let ret;
      if (Array.isArray(obj)) {
        //創(chuàng)建一個空數(shù)組
        ret = [];
        for (let i = 0; i < obj.length; i++) {
          ret[i] = this.cloneObj(obj[i]);
        }
        return ret;
      } else if (Object.prototype.toString.call(obj) === "[object Object]") {
        ret = {};
        for (let i in obj) {
          ret[i] = this.cloneObj(obj[i]);
        }
        return ret;
      } else {
        return obj;
      }
    },
    //添加表單
    addForm() {
      let arr = this.cloneObj(this.personObj);
      console.log("arr", arr);
      this.List.push(arr);
    },
    //提交表單
    submit() {
      console.log("this.List", this.List);
    },
  },
};
</script>

代碼分析:
這里封裝了一個深拷貝函數(shù),每次點擊添加表單時就會拷貝一份我們定義好的對象,注意這個對象是由我們初始表單的value值組合起來的,我們在最外層用v-for遍歷數(shù)組List然后每次點擊"添加表單"就往數(shù)組里push一個對象,最后點擊"提交表單"按鈕,打印this.List就能看到整個的數(shù)組對象了,我們來試一下,選擇輸入以下值:

在這里插入圖片描述

控制臺打印看下效果:

在這里插入圖片描述

現(xiàn)在假如說有個需求是,指定添加幾項表單,而不是點一次加一次表單,效果如下,有三個按鈕,最開始顯示一個表單

在這里插入圖片描述

當我點擊"3個"按鈕的時候,界面總共有三個表單,如下圖:

在這里插入圖片描述

代碼如下:

<template>
  <div>
    <div style="margin: 10px 0">
      <el-button type="primary" @click="add(3)">3個</el-button>
      <el-button type="primary" @click="addForm">添加表單</el-button>
      <el-button type="primary" @click="submit">提交表單</el-button>
    </div>
    <div v-for="(item, index) in List" :key="index">
      <el-form ref="form" label-width="80px">
        <el-form-item label="直播平臺">
          <el-select
            v-model="item.platform"
            :key="index"
            placeholder="請選擇直播平臺"
          >
            <el-option
              :label="item2.platformName"
              v-for="(item2, index2) in platformNameList"
              :key="index2"
              :value="item2.platformValue"
            >
            </el-option>
          </el-select>
        </el-form-item>

        <el-form-item label="粉絲量">
          <el-input v-model="item.fanMount" :key="index"></el-input>
        </el-form-item>

        <el-form-item label="平臺ID">
          <el-input v-model="item.platformId" :key="index"></el-input>
        </el-form-item>
      </el-form>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      title: "巡查內(nèi)容頁",
      personObj: {
        platform: "",
        fanMount: "",
        platformId: "",
      },
      platformNameList: [
        {
          platformName: "快手",
          platformValue: "1",
        },
        {
          platformName: "抖音",
          platformValue: "2",
        },
        {
          platformName: "淘寶",
          platformValue: "3",
        },
      ],
      List: [
        {
          platform: "",

          fanMount: "",
          platformId: "",
        },
      ],
    };
  },

  methods: {
    cloneObj(obj) {
      let ret;
      if (Array.isArray(obj)) {
        //創(chuàng)建一個空數(shù)組
        ret = [];
        for (let i = 0; i < obj.length; i++) {
          ret[i] = this.cloneObj(obj[i]);
        }
        return ret;
      } else if (Object.prototype.toString.call(obj) === "[object Object]") {
        ret = {};
        for (let i in obj) {
          ret[i] = this.cloneObj(obj[i]);
        }
        return ret;
      } else {
        return obj;
      }
    },
    add(a) {
      this.addForm(a);
    },
    addForm(a) {
      let arr = this.cloneObj(this.personObj);
      console.log("arr", arr);
      this.List.push(arr);
      a--;
      if (a > 0) {
        this.addForm(a - 1);
      }
    },
    submit() {
      console.log("this.list", this.List);
    },
  },
};
</script>

<style>
</style>

代碼分析如下:

點擊按鈕的add方法的時候傳入總共的表單個數(shù),然后在添加表單的方法addForm里用了自減和判斷、遞歸來實現(xiàn)連續(xù)點擊時的拷貝等。然后我們試一下效果

在這里插入圖片描述

控制臺打印看一下

在這里插入圖片描述

到此這篇關于詳解Vue里循環(huán)form表單項實例的文章就介紹到這了,更多相關Vue循環(huán)form表單項內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue axios sessionID每次請求都不同的原因以及修改方式

    vue axios sessionID每次請求都不同的原因以及修改方式

    這篇文章主要介紹了vue axios sessionID每次請求都不同的原因以及修改方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 淺析vue中的provide / inject 有什么用處

    淺析vue中的provide / inject 有什么用處

    這篇文章主要介紹了vue中的provide / inject 有什么用處,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • vue+freemarker中遇到的坑及解決

    vue+freemarker中遇到的坑及解決

    這篇文章主要介紹了vue+freemarker中遇到的坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue按時間段查詢數(shù)據(jù)組件使用詳解

    Vue按時間段查詢數(shù)據(jù)組件使用詳解

    這篇文章主要為大家詳細介紹了Vue按時間段查詢數(shù)據(jù)組件的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • VueJs中如何使用Teleport及組件嵌套層次結(jié)構(gòu)詳解

    VueJs中如何使用Teleport及組件嵌套層次結(jié)構(gòu)詳解

    這篇文章主要為大家介紹了VueJs中如何使用Teleport及組件嵌套層次結(jié)構(gòu)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • vue3.2自定義彈窗組件結(jié)合函數(shù)式調(diào)用示例詳解

    vue3.2自定義彈窗組件結(jié)合函數(shù)式調(diào)用示例詳解

    這篇文章主要為大家介紹了vue3.2自定義彈窗組件結(jié)合函數(shù)式調(diào)用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • 基于Vue2.0+ElementUI實現(xiàn)表格翻頁功能

    基于Vue2.0+ElementUI實現(xiàn)表格翻頁功能

    Element UI 是一套采用 Vue 2.0 作為基礎框架實現(xiàn)的組件庫,它面向企業(yè)級的后臺應用,能夠幫助你快速地搭建網(wǎng)站,極大地減少研發(fā)的人力與時間成本。這篇文章主要介紹了Vue2.0+ElementUI實現(xiàn)表格翻頁功能,需要的朋友可以參考下
    2017-10-10
  • vue路由監(jiān)聽的一些常用方式

    vue路由監(jiān)聽的一些常用方式

    有時在頁面刷新或者返回等操作時,想監(jiān)聽路由變化進行數(shù)據(jù)更新等操作,下面這篇文章主要給大家介紹了關于vue路由監(jiān)聽的一些常用方式,需要的朋友可以參考下
    2023-10-10
  • vue頁面使用多個定時器的方法

    vue頁面使用多個定時器的方法

    這篇文章主要為大家詳細介紹了vue頁面使用多個定時器的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • vue簡單的store詳解

    vue簡單的store詳解

    這篇文章主要介紹了詳解vue簡單的store,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-10-10

最新評論