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

前端elementUI?select選擇器實現(xiàn)遠程搜索

 更新時間:2022年05月31日 17:24:27   作者:把蘋果咬哭的測試筆記  
這篇文章主要為大家介紹了前端使用elementUI?select選擇器實現(xiàn)遠程搜索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

elementUI select選擇器遠程搜索

測試背景

先提下背景:就是在測試的過程中,經(jīng)常需要用到收貨這個功能。在PC端下了采購單,再到APP去對應(yīng)功能里,再輸入好多個字段,上傳圖片等動作后,終于可以提交。

于是,我決定在平臺上加個小工具,快捷收貨,方便測試用。

那么,在收貨操作中,要有收貨人這個角色。為了更好的適用性,我決定做成一個搜索框,支持實時搜索人員。于是,從elementUI上找到了select選擇器 遠程搜索。

菜鳥用法

這里提一下,前端菜鳥怎么去用elementUI上的這些組件:

  • 操作官方示例,感受組件的實際效果,確實是否滿足你需求。
  • 展開示例代碼,關(guān)注使用的字段、方法等。
  • copy示例代碼,用你實際的數(shù)據(jù)、字段等去替換掉它,直到調(diào)試成功。
<template>
  <el-select
    v-model="value"
    multiple
    filterable
    remote
    reserve-keyword
    placeholder="請輸入關(guān)鍵詞"
    :remote-method="remoteMethod"
    :loading="loading">
    <el-option
      v-for="item in options"
      :key="item.value"
      :label="item.label"
      :value="item.value">
    </el-option>
  </el-select>
</template>
<script>
  export default {
    data() {
      return {
        options: [],
        value: [],
        list: [],
        loading: false,
        states: ["Alabama", "Alaska", "Arizona",
        "Arkansas", "California", "Colorado",
        "Connecticut", "Delaware", "Florida",
        "Georgia", "Hawaii", "Idaho", "Illinois",
        "Indiana", "Iowa", "Kansas", "Kentucky",
        "Louisiana", "Maine", "Maryland",
        "Massachusetts", "Michigan", "Minnesota",
        "Mississippi", "Missouri", "Montana",
        "Nebraska", "Nevada", "New Hampshire",
        "New Jersey", "New Mexico", "New York",
        "North Carolina", "North Dakota", "Ohio",
        "Oklahoma", "Oregon", "Pennsylvania",
        "Rhode Island", "South Carolina",
        "South Dakota", "Tennessee", "Texas",
        "Utah", "Vermont", "Virginia",
        "Washington", "West Virginia", "Wisconsin",
        "Wyoming"]
      }
    },
    mounted() {
      this.list = this.states.map(item => {
        return { value: `value:${item}`, label: `label:${item}` };
      });
    },
    methods: {
      remoteMethod(query) {
        if (query !== '') {
          this.loading = true;
          setTimeout(() => {
            this.loading = false;
            this.options = this.list.filter(item => {
              return item.label.toLowerCase()
                .indexOf(query.toLowerCase()) > -1;
            });
          }, 200);
        } else {
          this.options = [];
        }
      }
    }
  }
</script>

從示例代碼里,可以看出:

states應(yīng)該存放我后端接口返回的數(shù)據(jù),示例里states是列表,我接口返回的也是列表,不過里面元素都是對象,每個對象里存著不同人的信息。

mounted()方法里面,是在渲染完成后,將states里的列表數(shù)據(jù),進一步處理成一個對象,用map()返回一個新的列表,并且賦值給this.list

最終在remoteMethod(query)方法里,根據(jù)輸入的傳參query,對this.list里的數(shù)據(jù)進行過濾,返回出匹配的數(shù)據(jù),賦值到this.options,這樣下拉列表就可以展示結(jié)果。

這里的.indexOf(query.toLowerCase()) > -1,大于-1說明只要有就行,不論是不是開頭也好,中間也好,或者結(jié)尾也好。比如搜“大周”,你輸入“大”或者“周”,都可以搜到。

官方參考

趕緊參考官方示例,滿心歡喜地開始修改代碼:

// mounted()內(nèi)容
        mounted() {
            this.list = this.states.map(item => {
                return { value: `${item.id}`, label: `${item.role_name}-${item.ad_real_name}` };
            });
        },// method()里內(nèi)容
            remoteMethod(query) {
                if (query !== '') {
                    this.loading = true;
                    this.$axios.post("/api/receiveGoodsQuickly/getWmsAdminInfo", {
                        "ad_real_name": query,
                        "mchid": 6001
                    }).then((response) => {
                        this.states = response.data['content'];
                    });
                    setTimeout(() => {
                        this.loading = false;
                        this.options = this.list.filter(item => {
                            return item.label.toLowerCase()
                                .indexOf(query.toLowerCase()) > -1;
                        });
                    }, 1000);
                } else {
                    this.options = [];
                }
            },

可是實際執(zhí)行效果是這樣的:

我輸入第一次“張三”,沒結(jié)果。當(dāng)我再輸入一次“張三”,返回出了對應(yīng)的結(jié)果。

我繼續(xù)輸入“李四”,仍然沒結(jié)果,再輸入一次“李四”,結(jié)果出來了......

后來發(fā)現(xiàn),還是不能直接套用官方示例的,因為示例代碼是直接初始化了數(shù)據(jù)在states里,而我實際是要去請求后端接口才能拿到數(shù)據(jù)。如此一來,當(dāng)我第一次調(diào)用到remoteMethod
方法,實際上this.list是null。當(dāng)我第二次調(diào)用的時候,其實出現(xiàn)的是上一次的查詢結(jié)果。

最終,找到了解決辦法,就是在computed增加處理步驟,computed起到偵聽的作用,這樣可以立即得到處理好的數(shù)據(jù)。

computed: {
            listSet() {
                return this.states.map(item => {
                    return { value: `${item.id}`, label: `${item.role_name}-${item.ad_real_name}` };
                });
            }
        },
 setTimeout(() => {
                        this.loading = false;
                        this.options = this.listSet.filter(item => { // 這里的this.list,換為this.listSet
                            return item.label.toLowerCase()
                                .indexOf(query.toLowerCase()) > -1;
                        });
                    }, 1000);

調(diào)試通過,搜索結(jié)果實時展示。

以上就是前端elementUI select選擇器實現(xiàn)遠程搜索的詳細內(nèi)容,更多關(guān)于前端elementUI select遠程搜索的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue3實現(xiàn)問卷調(diào)查的示例代碼

    vue3實現(xiàn)問卷調(diào)查的示例代碼

    本文主要介紹了vue3實現(xiàn)問卷調(diào)查的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • vue單向數(shù)據(jù)流的深入理解

    vue單向數(shù)據(jù)流的深入理解

    隨著前端的項目的越來越復(fù)雜,出現(xiàn)了一堆概念來降低開發(fā)的復(fù)雜性,單向數(shù)據(jù)流就是其中一個,下面這篇文章主要給大家介紹了關(guān)于vue單向數(shù)據(jù)流的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01
  • vue動態(tài)生成dom并且自動綁定事件

    vue動態(tài)生成dom并且自動綁定事件

    本篇文章主要介紹了vue動態(tài)生成dom并且自動綁定事件,具有一定的參考價值,有興趣的可以了解一下。
    2017-04-04
  • Vue自定義指令獲取不到參數(shù)的原因及解決

    Vue自定義指令獲取不到參數(shù)的原因及解決

    這篇文章主要介紹了Vue自定義指令獲取不到參數(shù)的原因及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • element-ui中this.$confirm提示文字中部分有顏色自定義方法

    element-ui中this.$confirm提示文字中部分有顏色自定義方法

    this.$confirm是一個Vue.js中的彈窗組件,其樣式可以通過CSS進行自定義,下面這篇文章主要給大家介紹了關(guān)于element-ui中this.$confirm提示文字中部分有顏色的自定義方法,需要的朋友可以參考下
    2024-02-02
  • Vue elementui字體圖標顯示問題解決方案

    Vue elementui字體圖標顯示問題解決方案

    這篇文章主要介紹了Vue elementui字體圖標顯示問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • vue中使用iframe嵌入網(wǎng)頁,頁面可自適應(yīng)問題

    vue中使用iframe嵌入網(wǎng)頁,頁面可自適應(yīng)問題

    這篇文章主要介紹了vue中使用iframe嵌入網(wǎng)頁,頁面可自適應(yīng)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue自動化表單實例分析

    vue自動化表單實例分析

    本篇文章通過實例給大家分享了vue自動化表單的操作方法以及相關(guān)的代碼做了描述,有興趣的朋友可以跟著學(xué)習(xí)下。
    2018-05-05
  • vue中touch和click共存的解決方式

    vue中touch和click共存的解決方式

    這篇文章主要介紹了vue中touch和click共存的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue3中ref獲取子組件的值代碼示例

    vue3中ref獲取子組件的值代碼示例

    這篇文章主要給大家介紹了關(guān)于vue3中ref獲取子組件值的相關(guān)資料,在Vue3中父組件獲取子組件的值可以通過使用'ref'和'$refs'來實現(xiàn),文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-08-08

最新評論

辽宁省| 淅川县| 安泽县| 古丈县| 建德市| 射阳县| 九台市| 饶平县| 商丘市| 手游| 九江市| 温泉县| 攀枝花市| 丰原市| 富顺县| 姜堰市| 永宁县| 海南省| 稷山县| 平江县| 马公市| 南城县| 阿克苏市| 兴隆县| 平乡县| 依兰县| 龙井市| 乐昌市| 邢台县| 中阳县| 增城市| 壶关县| 运城市| 河源市| 安塞县| 堆龙德庆县| 旬邑县| 福州市| 蒙城县| 宜兴市| 靖西县|