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

element-ui下拉輸入框+resetFields無法回顯的問題解決

 更新時間:2025年01月09日 15:37:07   作者:滿分觀察網(wǎng)友z  
本文主要介紹了在使用Element?UI的下拉輸入框時,點擊重置按鈕后輸入框無法回顯數(shù)據(jù)的問題,具有一定的參考價值,感興趣的可以了解一下

描述

第一次進入頁面,不做任何操作,點擊重置按鈕,再進行下拉選擇,輸入框并不能回顯數(shù)據(jù),點擊搜索后,選中的數(shù)據(jù)就能顯示出來。

請?zhí)砑訄D片描述

重置代碼,resetForm的底層用的是表單的resetFields。

resetFields的作用:對整個表單進行重置,將所有字段重置為初始值(而不是設置為空值)并移除校驗結果

注意:一定要加上prop,否則無法清除

    // 重置按鈕操作
    resetQuery: _.debounce(function () {
      //重置表單
      this.resetForm("queryForm");
      //搜索
      this.handleQuery();
    }, 500),

在這里插入圖片描述

原因

表單綁定的是搜索的對象內容,而表單的內容使用的是v-model來綁定,如果沒給表單內容初始值,那么綁定的內容就不是響應式,打印出來也可以看見。所以就會出現(xiàn)搜索后才會回顯選中的內容。

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

這時候就有兩種解決方法

  • 給表單初始值,讓它變成響應式,但是如果表單內容有100個的話,得一個個加。
  • 清空的時候,不必使用表單的清除屬性resetField,而是使用封裝好的清空對象方法。

問題重現(xiàn)

這里只給了請假類型初始值,而未給請假方式初始值。

請?zhí)砑訄D片描述

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

<template>
  <div style="margin-top: 100px">
    <el-form
      :model="form"
      ref="ruleForm"
      label-width="100px"
      class="demo-ruleForm"
    >
      <el-form-item label="請假類型" prop="leaveType">
        <el-select v-model="form.leaveType" placeholder="請選擇請假類型">
          <el-option label="事假" value="1"></el-option>
          <el-option label="病假" value="2"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="請假方式" prop="leaveWay">
        <el-select v-model="form.leaveWay" placeholder="請選擇請假方式">
          <el-option label="單次請假" value="1"></el-option>
          <el-option label="長期請假" value="2"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submitForm('ruleForm')"
          >確定</el-button
        >
        <el-button @click="resetForm('ruleForm')">重置</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      form: {
        leaveType: "",
      },
    };
  },
  methods: {
    resetForm(formName) {
      console.log("form", this.form);
      this.$refs[formName].resetFields();
    },
  },
};
</script>

<style lang="scss" scoped></style>

解決方案

方法一

給表單初始值,讓它變成響應式,可以很明顯地看到表單的初始化內容,都有響應式。

form: {
        leaveType: "",
        leaveWay: "",
      },

在這里插入圖片描述

缺點是需要一個個加,很費時間。

方法二

不使用表單的resetFields清空表單,而是使用清空對象的cleanObject方法。

<template>
  <div style="margin-top: 100px">
    <el-form
      :model="form"
      ref="ruleForm"
      label-width="100px"
      class="demo-ruleForm"
    >
      <el-form-item label="請假類型" prop="leaveType">
        <el-select v-model="form.leaveType" placeholder="請選擇請假類型">
          <el-option label="事假" value="1"></el-option>
          <el-option label="病假" value="2"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="請假方式" prop="leaveWay">
        <el-select v-model="form.leaveWay" placeholder="請選擇請假方式">
          <el-option label="單次請假" value="1"></el-option>
          <el-option label="長期請假" value="2"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-button type="primary">確定</el-button>
        <el-button @click="resetForm(form)">重置</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      form: {},
    };
  },
  methods: {
    resetForm(formName) {
      this.cleanObject(formName);
    },
    cleanObject(obj) {
      // 判斷對象是否為非對象或null
      if (typeof obj !== "object" || obj === null) {
        return obj;
      }

      // 判斷對象是否為數(shù)組
      if (Array.isArray(obj)) {
        // 遞歸處理數(shù)組中的每個元素
        return obj.map((item) => this.cleanObject(item));
      }

      // 如果是對象,則遍歷其屬性
      for (const key in obj) {
        // 判斷值是否為數(shù)組
        if (Array.isArray(obj[key])) {
          // 如果是數(shù)組,則將其置為空數(shù)組
          obj[key] = [];
        } else {
          // 遞歸處理對象中的每個值
          obj[key] = this.cleanObject(obj[key]);
        }
      }
    },
  },
};
</script>

<style lang="scss" scoped></style>

總結

實際場景用方法二會比較好點,如果有100個下拉框,給初始值的話,那你就要給100個內容進行初始化,很浪費時間。在vue3中也存在這樣的情況,不知道這是不是resetFields遺留下來的bug,還需要看一下resetFields的源碼。具體的原理還需要大家在評論區(qū)進行補充,附上vue3試驗的代碼。

<template>
  <el-form :model="form" ref="form" label-width="100px" class="demo-ruleForm">
    <el-form-item label="請假類型" prop="leaveType">
      <el-select v-model="form.leaveType" placeholder="請選擇請假類型">
        <el-option label="事假" value="1"></el-option>
        <el-option label="病假" value="2"></el-option>
      </el-select>
    </el-form-item>
    <el-form-item label="請假方式" prop="leaveWay">
      <el-select v-model="form.leaveWay" placeholder="請選擇請假方式">
        <el-option label="單次請假" value="1"></el-option>
        <el-option label="長期請假" value="2"></el-option>
      </el-select>
    </el-form-item>
    <el-form-item>
      <el-button type="primary">確定</el-button>
      <el-button @click="resetForm(form)">重置</el-button>
    </el-form-item>
  </el-form>
</template>

<script setup>
import { ref } from "vue";

const form = ref({});

const resetForm = (formEl) => {
  if (!formEl) return;
  formEl.resetFields();
};
</script>

到此這篇關于element-ui下拉輸入框+resetFields無法回顯的問題解決的文章就介紹到這了,更多相關element resetFields無法回顯內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • vue設置代理不起作用問題及解決

    vue設置代理不起作用問題及解決

    這篇文章主要介紹了vue設置代理不起作用問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 基于Vue3實現(xiàn)日歷組件的示例代碼

    基于Vue3實現(xiàn)日歷組件的示例代碼

    日歷在很多地方都可以使用的到,這篇文章主要介紹了如何利用vue3實現(xiàn)簡單的日歷控件,文中通過示例代碼講解詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Vue3?setup添加name的方法步驟

    Vue3?setup添加name的方法步驟

    如果你在 vue3 開發(fā)中使用了語法的話,對于組件的name屬性,需要做一番額外的處理,下面這篇文章主要給大家介紹了關于Vue3?setup添加name的相關資料,需要的朋友可以參考下
    2022-11-11
  • Vue結合原生js實現(xiàn)自定義組件自動生成示例

    Vue結合原生js實現(xiàn)自定義組件自動生成示例

    這篇文章主要介紹了Vue結合原生js實現(xiàn)自定義組件自動生成示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • VUE事件處理之@click用法示例代碼

    VUE事件處理之@click用法示例代碼

    在Vue進行前端開發(fā)中事件處理是必不可少的功能,下面這篇文章主要給大家介紹了關于VUE事件處理之@click用法的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • vue3.0父傳給子的值不隨父組件改變而改變問題及解決

    vue3.0父傳給子的值不隨父組件改變而改變問題及解決

    這篇文章主要介紹了vue3.0父傳給子的值不隨父組件改變而改變問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue將html頁面生成高清晰pdf文件的方法

    vue將html頁面生成高清晰pdf文件的方法

    最近工作中遇到個需求,需要實現(xiàn)個可視化圖表頁的PDF文件導出,所以下面這篇文章主要給大家介紹了關于利用vue如何將html頁面生成高清晰pdf文件的相關資料,需要的朋友可以參考下
    2022-03-03
  • vue 使某個組件不被 keep-alive 緩存的方法

    vue 使某個組件不被 keep-alive 緩存的方法

    今天小編就為大家分享一篇vue 使某個組件不被 keep-alive 緩存的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 使用github部署前端vue項目

    使用github部署前端vue項目

    這篇文章主要為大家介紹了使用github部署前端vue項目過程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • 解決vux 中popup 組件Mask 遮罩在最上層的問題

    解決vux 中popup 組件Mask 遮罩在最上層的問題

    這篇文章主要介紹了解決vux 中popup 組件Mask 遮罩在最上層的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論

平利县| 陈巴尔虎旗| 舒兰市| 剑河县| 湟中县| 容城县| 松阳县| 木兰县| 二连浩特市| 金沙县| 桃园市| 年辖:市辖区| 青浦区| 兴隆县| 海兴县| 靖州| 合阳县| 德格县| 湛江市| 上饶县| 平顺县| 兴义市| 义乌市| 苗栗市| 改则县| 汶上县| 巴中市| 安达市| 措美县| 仁布县| 海盐县| 昌乐县| 庆城县| 牡丹江市| 高阳县| 珠海市| 望奎县| 邵东县| 自治县| 开原市| 盐源县|