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

詳解Vue里循環(huán)form表單項(xiàng)實(shí)例

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

有的時(shí)候我們可能會(huì)遇到這種需求,用戶點(diǎn)擊某個(gè)按鈕就可以增加一個(gè)同樣的表單出來,點(diǎn)擊一次增加一次。然后要用到深拷貝,Vue.js+ElementUI等等。效果大概如下,就是一個(gè)表單有下拉框和兩個(gè)輸入框,現(xiàn)在點(diǎn)擊"添加表單"按鈕之后就會(huì)多一個(gè)表單出來,點(diǎn)擊"提交表單"后就同時(shí)提交兩個(gè)表單的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="直播平臺(tái)">
          <el-select
            v-model="item.platform"
            :key="index"
            placeholder="請(qǐng)選擇直播平臺(tái)"
          >
            <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="平臺(tái)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)建一個(gè)空數(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>

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

在這里插入圖片描述

控制臺(tái)打印看下效果:

在這里插入圖片描述

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

在這里插入圖片描述

當(dāng)我點(diǎn)擊"3個(gè)"按鈕的時(shí)候,界面總共有三個(gè)表單,如下圖:

在這里插入圖片描述

代碼如下:

<template>
  <div>
    <div style="margin: 10px 0">
      <el-button type="primary" @click="add(3)">3個(gè)</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="直播平臺(tái)">
          <el-select
            v-model="item.platform"
            :key="index"
            placeholder="請(qǐng)選擇直播平臺(tái)"
          >
            <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="平臺(tái)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)建一個(gè)空數(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>

代碼分析如下:

點(diǎn)擊按鈕的add方法的時(shí)候傳入總共的表單個(gè)數(shù),然后在添加表單的方法addForm里用了自減和判斷、遞歸來實(shí)現(xiàn)連續(xù)點(diǎn)擊時(shí)的拷貝等。然后我們?cè)囈幌滦Ч?br />

在這里插入圖片描述

控制臺(tái)打印看一下

在這里插入圖片描述

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

相關(guān)文章

  • vue中v-model失效原因以及解決方案

    vue中v-model失效原因以及解決方案

    這篇文章主要給大家介紹了關(guān)于vue中v-model失效原因以及解決方案的相關(guān)資料,vue的v-model是一個(gè)雙向綁定的數(shù)據(jù)流,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • 在iview+vue項(xiàng)目中使用自定義icon圖標(biāo)方式

    在iview+vue項(xiàng)目中使用自定義icon圖標(biāo)方式

    這篇文章主要介紹了在iview+vue項(xiàng)目中使用自定義icon圖標(biāo)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue項(xiàng)目引發(fā)的「過濾器」使用教程

    Vue項(xiàng)目引發(fā)的「過濾器」使用教程

    這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目引發(fā)的「過濾器」使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Vue路由與a標(biāo)簽鏈接錨點(diǎn)發(fā)生沖突問題及解決

    Vue路由與a標(biāo)簽鏈接錨點(diǎn)發(fā)生沖突問題及解決

    這篇文章主要介紹了Vue路由與a標(biāo)簽鏈接錨點(diǎn)發(fā)生沖突問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue路由vue-router用法講解

    Vue路由vue-router用法講解

    這篇文章介紹了Vue路由vue-router的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • vue 使用 canvas 實(shí)現(xiàn)手寫電子簽名

    vue 使用 canvas 實(shí)現(xiàn)手寫電子簽名

    這篇文章主要介紹了vue 使用 canvas 實(shí)現(xiàn)手寫電子簽名功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Vue項(xiàng)目打包部署到apache服務(wù)器的方法步驟

    Vue項(xiàng)目打包部署到apache服務(wù)器的方法步驟

    這篇文章主要介紹了Vue項(xiàng)目打包部署到apache服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Vue中computed和watch的區(qū)別小結(jié)

    Vue中computed和watch的區(qū)別小結(jié)

    watch和computed都是以Vue的依賴追蹤機(jī)制為基礎(chǔ)的,當(dāng)某一個(gè)依賴型數(shù)據(jù)發(fā)生變化的時(shí)候,所有依賴這個(gè)數(shù)據(jù)的相關(guān)數(shù)據(jù)會(huì)自動(dòng)發(fā)生變化,即自動(dòng)調(diào)用相關(guān)的函數(shù),來實(shí)現(xiàn)數(shù)據(jù)的變動(dòng),這篇文章簡(jiǎn)單介紹下Vue中computed和watch的區(qū)別異同,感興趣的朋友一起看看吧
    2022-12-12
  • 前端大文件上傳與下載(分片上傳)的詳細(xì)過程

    前端大文件上傳與下載(分片上傳)的詳細(xì)過程

    最近遇見一個(gè)需要上傳超大大文件的需求,所以下面這篇文章主要給大家介紹了關(guān)于前端大文件上傳與下載(分片上傳)的詳細(xì)過程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • Vue路由監(jiān)聽實(shí)現(xiàn)同頁面動(dòng)態(tài)加載的示例

    Vue路由監(jiān)聽實(shí)現(xiàn)同頁面動(dòng)態(tài)加載的示例

    本文主要介紹了Vue基于路由監(jiān)聽實(shí)現(xiàn)同頁面動(dòng)態(tài)加載的示例,重點(diǎn)在于切換路由的時(shí)候,重新拉取列表數(shù)據(jù),接下來看看實(shí)現(xiàn)方法吧
    2021-05-05

最新評(píng)論

蓬安县| 镶黄旗| 昌黎县| 呼图壁县| 西乌珠穆沁旗| 永济市| 屯昌县| 吉木萨尔县| 聂荣县| 安泽县| 东城区| 平顺县| 宝应县| 兴城市| 富蕴县| 兴海县| 凤庆县| 丰镇市| 巴塘县| 富宁县| 福清市| 辽中县| 梓潼县| 铜鼓县| 永丰县| 定襄县| 双牌县| 溧阳市| 山西省| 保靖县| 乌兰察布市| 清河县| 庆元县| 阿克| 曲松县| 济宁市| 神池县| 江西省| 东城区| 新建县| 崇左市|