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

Vue實(shí)現(xiàn)模糊查詢filter()實(shí)例詳解

 更新時(shí)間:2023年04月10日 09:47:39   作者:陌一一  
因?yàn)榻赵趯W(xué)習(xí)并使用VUE,客戶有一個(gè)要求,要輸入框可模糊查詢并帶有下拉提示的應(yīng)用,數(shù)據(jù)從接口取,下面這篇文章主要給大家介紹了關(guān)于Vue實(shí)現(xiàn)模糊查詢filter()的相關(guān)資料,需要的朋友可以參考下

需求:在輸入框里輸入內(nèi)容,包含相關(guān)內(nèi)容的值被篩選出來;

圖示:

最初的代碼:

<body>
    <div id="box">
        <input type="text" @input="handleInput()" v-model="mytext">
        <ul>
            <li v-for="item in datalist" :key="item">
                {{item}}
            </li>
        </ul>
    </div>
    <script>
        new Vue({
            el:"#box",
            data:{
                mytext:"",
                datalist:["aaa","add","bbb","bbc","ccc","ddd","abd"]
            },
            methods:{
                handleInput(){
                    console.log("input",this.mytext)
                    this.datalist=this.datalist.filter(item=>item.includes(this.mytext))//篩選出來包含輸入框值的元素
                    //然后賦值給原數(shù)組,因?yàn)閒ilter不會(huì)改變?cè)瓟?shù)組,所以要用賦值的辦法使得原數(shù)組改變,進(jìn)而改變dom
                }
            }
        })
    </script>
</body>

思路分析:

input、change事件選擇:

首先我們要獲取輸入框里的內(nèi)容,知道輸入框當(dāng)前的內(nèi)容才能進(jìn)行篩選,事件有兩種可以選擇:input和change,我們使用了input,它的作用是:只要輸入框的value發(fā)生改變就會(huì)觸發(fā);為什么不用change,因?yàn)樗淖饔檬牵寒?dāng)value值發(fā)生改變而且輸入框失去焦點(diǎn)的時(shí)候才能觸發(fā),也就是如果我們改變了輸入框的值,但是鼠標(biāo)一直放在輸入框中沒失去焦點(diǎn),它也是不會(huì)觸發(fā)的,我們需要的是輸入框每次改變,就進(jìn)行篩選,所以說change是不行的。

 v-model的使用:

  • 使用v-model的原因是能拿到輸入框的值,把它放在input事件的回調(diào)函數(shù)里,就可以實(shí)現(xiàn)每次輸入框的值改變就能拿到相應(yīng)的值。
  • 也就是“console.log("input",this.mytext)”這句代碼的含義。

filter的用法:

filter(回調(diào)函數(shù)):filter方法具有篩選功能,篩選出來符合條件的值,參數(shù)是回調(diào)函數(shù),本來的寫法是下面這樣,代碼中用的是箭頭函數(shù)的寫法,箭頭函數(shù)寫法可以省略function,(),{}和return(當(dāng)然是在一定條件限制下,上面的代碼符合這個(gè)要求,所以可以省略)。箭頭后面寫的是判斷條件。

filter(function(){
            return 判斷條件
        })

includes方法:

這個(gè)方法是字符串的一個(gè)方法,可以找出來包含某個(gè)內(nèi)容的所有元素。

覆蓋原數(shù)組的原因:

篩選完以后要賦值給原數(shù)組是因?yàn)?,必須改變?cè)瓟?shù)組,才能實(shí)現(xiàn)dom的更新,而filter方法不會(huì)改變?cè)瓟?shù)組,所以要用賦值的方法。

為什么要重新賦值一個(gè)數(shù)組originList:

因?yàn)槿绻凑障旅孢@個(gè)方法:

結(jié)果是,當(dāng)你輸入一個(gè)“a”,篩選出來了包含a的元素,然后數(shù)組就改變成只包含a的元素的值了,比如數(shù)組變?yōu)閇"aaa","add",'abd"],然后下一次想在數(shù)組上去查其他的元素,比如查“c”相關(guān)的元素,就查不到了,因?yàn)樵瓟?shù)組已經(jīng)被改變了,回不去了。所以這就有問題了,因?yàn)槲覀兿朊看味荚谠瓟?shù)組的基礎(chǔ)上進(jìn)行查。 有幾種解決辦法

(1)方法一:上面那個(gè)復(fù)制一個(gè)新的數(shù)組出來,每次在新數(shù)組上查詢,再賦值給datalist數(shù)組進(jìn)行顯示,這樣新數(shù)組始終是不會(huì)改變的,所以這樣就能保證我們每次查詢都是在完整的數(shù)組上查詢的。 代碼見:(在原來的代碼中更改的部分)

每次從老數(shù)組里面過濾賦值給新數(shù)組,就能保證“回不去的問題”

 結(jié)果:

(2) 方法二:定義一個(gè)函數(shù)表達(dá)式,通過返回篩選后的結(jié)果,重新讓li遍歷

<body>
    <div id="box">
        <input type="text" v-model="mytext">
        <ul>
            <li v-for="item in test()" :key="item">
                {{item}}
            </li>
        </ul>
        <!-- 定義一個(gè)函數(shù)表達(dá)式 -->
        <!-- {{test()}} -->
    </div>
    <script>
        new Vue({
            el:"#box",
            data:{
                mytext:"",
                datalist:["aaa","add","bbb","bbc","ccc","ddd","abd"],
            },
            methods:{
                test(){
                    return this.datalist.filter(item=>item.includes(this.mytext))
                }
            }
        })
    </script>
</body>
  • test()是一個(gè)方法,函數(shù)表達(dá)式;
  • 表達(dá)式可以放在{{}}雙括號(hào)里,也可以放在“v-”指令里,函數(shù)表達(dá)式也是表達(dá)式的一種,所以可以放在v-for里;
  • 每次mytext改變,test()方法都會(huì)重新執(zhí)行;
  • 重點(diǎn)注意的地方:

總結(jié)

到此這篇關(guān)于Vue實(shí)現(xiàn)模糊查詢filter()的文章就介紹到這了,更多相關(guān)Vue模糊查詢filter()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何使用yarn創(chuàng)建vite+vue3&&electron多端運(yùn)行

    如何使用yarn創(chuàng)建vite+vue3&&electron多端運(yùn)行

    這篇文章主要介紹了如何使用yarn創(chuàng)建vite+vue3&&electron多端運(yùn)行,本文分步驟給大家介紹的非常詳細(xì),包括使用yarn創(chuàng)建vite+vue3項(xiàng)目會(huì)遇到哪些問題,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • Vue+TypeScript中處理computed方式

    Vue+TypeScript中處理computed方式

    這篇文章主要介紹了Vue+TypeScript中處理computed方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue3?自定義指令控制按鈕權(quán)限的操作代碼

    vue3?自定義指令控制按鈕權(quán)限的操作代碼

    這篇文章主要介紹了vue3?自定義指令控制按鈕權(quán)限,為了提高用戶體驗(yàn),當(dāng)該按鈕無權(quán)使用時(shí),使用el-tooltip功能進(jìn)行提醒,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • 一篇帶你搞懂Vue中的自定義指令

    一篇帶你搞懂Vue中的自定義指令

    自定義指令,是Vue提供的一種擴(kuò)展和定制的機(jī)制,使開發(fā)者能夠在組件中直接操作DOM、處理事件、添加樣式等,并提供了與第三方庫集成的方式,定義指令使得Vue在處理交互和DOM操作時(shí)更加靈活和強(qiáng)大,本文將帶大家搞懂Vue中的自定義指令,需要的朋友可以參考下
    2023-07-07
  • el-tooltip根據(jù)條件控制顯示的示例代碼

    el-tooltip根據(jù)條件控制顯示的示例代碼

    這篇文章主要介紹了el-tooltip根據(jù)條件控制顯示的示例代碼,包括列表型和樹狀圖型,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-12-12
  • Vue3.2?setup語法糖及Hook函數(shù)基本使用

    Vue3.2?setup語法糖及Hook函數(shù)基本使用

    這篇文章主要為大家介紹了Vue3.2?setup語法糖及Hook函數(shù)基本使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • vue3中v-model的用法詳解

    vue3中v-model的用法詳解

    vue 提供了很多自定義指令,大大方便了我們的開發(fā),其中最常用的也就是 v-model,他可以在組件上使用以實(shí)現(xiàn)雙向綁定。它可以綁定多種數(shù)據(jù)結(jié)構(gòu), 今天總結(jié)一下用法
    2023-04-04
  • Vue與.net?Core?接收List<T>泛型參數(shù)

    Vue與.net?Core?接收List<T>泛型參數(shù)

    這篇文章主要介紹了Vue與.net?Core?接收List<T>泛型參數(shù),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-04-04
  • vue實(shí)現(xiàn)動(dòng)態(tài)表單動(dòng)態(tài)渲染組件的方式(1)

    vue實(shí)現(xiàn)動(dòng)態(tài)表單動(dòng)態(tài)渲染組件的方式(1)

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)動(dòng)態(tài)表單動(dòng)態(tài)渲染組件的方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 前端vue打包項(xiàng)目,如何解決跨域問題

    前端vue打包項(xiàng)目,如何解決跨域問題

    這篇文章主要介紹了前端vue打包項(xiàng)目,如何解決跨域問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評(píng)論