微信小程序?qū)崿F(xiàn)搜索功能
在頁(yè)面search.wxml中,定義一個(gè)input輸入框以及搜索的點(diǎn)擊按鈕,分別為它們綁定點(diǎn)擊事件handleInputChange()
和handleSearch()
的事件,同時(shí)在它們的下面定義搜索的列表,代碼如下所示:
<view class="search-header"> <input class="search-input" bindtap="handleInputChange" /> <view class="search-btn" bindtap="handleSearch">搜索</view> </view> <view> <view wx:for="{{list}}" wx:key="{{index}}" class="item" id="{{item.id}}" bindtap="handleItemTap"> <view>{{ item }}</view> <view class="item-message">{{ item.message }}</view> </view> </view>
在邏輯文件search.js中,在data中存放list的數(shù)據(jù),為空數(shù)組,存放搜索列表的數(shù)據(jù),同時(shí)定義staticData,在里面定義inputValue,里面為空字符串,是input輸入框的值,代碼如下所示:
data: { list: [] }, staticData: { inputValue: "" }
在search.js的onLoad()生命周期函數(shù)中,調(diào)用請(qǐng)求數(shù)據(jù)的函數(shù)getSearchResult(),這樣在一進(jìn)入頁(yè)面的時(shí)候就會(huì)獲取到所有的數(shù)據(jù),不過(guò)由于并沒(méi)有關(guān)鍵字keyword,需要傳空字符串,代碼如下所示:
onLoad() { this.getSearchResult(""); }, getSearchResult(keyword) { wx.request({ url: 'xxxxxx', data: { keyword: this.staticData.inputValue }, method: "POST", header: { 'content-type': 'application/x-www-form-urlencoded' }, success: this.getSearchResultSucc.bind(this) }) },
在search.js中,定義一個(gè)響應(yīng)成功后的函數(shù)getSearchResultSucc(),判斷響應(yīng)的數(shù)據(jù)是否存在。如果存在通過(guò)this.setData()方法將響應(yīng)后的數(shù)據(jù)賦值給list,如果不存在,list仍然為空數(shù)組,代碼如下所示:
getSearchResultSucc(res) { // console.log(res) if (res.data.ret) { const result = res.data.data; this.setData({ list: result }) } else { this.setData({ list: [] }) } }
在search.js中,定義handleInputChange()
函數(shù),這個(gè)函數(shù)也是input輸入框綁定的函數(shù),傳入事件對(duì)象e,然后通過(guò)e.detail.value賦值給staticData的inputValue,代碼如下所示:
handleInputChange(e) { this.staticData.inputValue = e.detail.value; }
在search.js中,定義handleSearch()函數(shù),這個(gè)函數(shù)也是之前搜索按鈕所綁定的函數(shù),在這個(gè)里面重新發(fā)起一次請(qǐng)求,攜帶keyword關(guān)鍵字發(fā)起請(qǐng)求,代碼如下所示:
handleSearch (keyword) { this.getSearchResult(keyword) }
如果想要點(diǎn)擊在搜索以后顯示的列表,可以在列表中綁定handleItemTap()
事件,傳入事件對(duì)象e,通過(guò) e.currentTaret.id去獲取到點(diǎn)擊的id,然后再通過(guò) wx.navigateTo()
方法跳轉(zhuǎn)到相應(yīng)的詳情頁(yè),代碼如下所示:
handleItemTap(e) { wx.navigateTo({ url: '/pages/detail/detail?id=' + e.currentTaret.id }) }
知識(shí)點(diǎn)補(bǔ)充:微信小程序云開(kāi)發(fā)模糊查找功能實(shí)現(xiàn)
//連接數(shù)據(jù)庫(kù) const db = wx.cloud.database() var that = this db.collection(‘newsname').where({ //使用正則查詢(xún),實(shí)現(xiàn)對(duì)搜索的模糊查詢(xún) _name: db.RegExp({ regexp: value, //從搜索欄中獲取的value作為規(guī)則進(jìn)行匹配。 options: ‘i', //大小寫(xiě)不區(qū)分 }) }).get({ success: res => { console.log(res) that.setData({ search_list: res.data }) } })
總結(jié)
到此這篇關(guān)于微信小程序?qū)崿F(xiàn)搜索功能的文章就介紹到這了,更多相關(guān)微信小程序搜索功能內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 微信小程序首頁(yè)的分類(lèi)功能和搜索功能的實(shí)現(xiàn)思路及代碼詳解
- 微信小程序搜索組件wxSearch實(shí)例詳解
- 微信小程序下拉框搜索功能的實(shí)現(xiàn)方法
- 微信小程序?qū)崿F(xiàn)搜索功能并跳轉(zhuǎn)搜索結(jié)果頁(yè)面
- 微信小程序搜索框樣式并實(shí)現(xiàn)跳轉(zhuǎn)到搜索頁(yè)面(小程序搜索功能)
- 微信小程序?qū)崿F(xiàn)全局搜索代碼高亮的示例
- 微信小程序?qū)崿F(xiàn)搜索歷史功能
- 微信小程序 搜索框組件代碼實(shí)例
- 微信小程序?qū)崿F(xiàn)搜索框功能
- 微信小程序?qū)崿F(xiàn)簡(jiǎn)單搜索功能
相關(guān)文章
在js(jquery)中獲得文本框焦點(diǎn)和失去焦點(diǎn)的方法
文章介紹兩個(gè)方法和種是利用javascript onFocus onBlur來(lái)判斷焦點(diǎn)和失去焦點(diǎn),加一種是利用jquery $("p").blur(); 或$("p").blur(fn)來(lái)實(shí)現(xiàn),有需要的朋友可以參考一下2012-12-12inquirer.js一個(gè)用戶(hù)與命令行交互的工具詳解
這篇文章主要介紹了inquirer.js一個(gè)用戶(hù)與命令行交互的工具詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05微信開(kāi)發(fā)之調(diào)起攝像頭、本地展示圖片、上傳下載圖片實(shí)例
這篇文章主要介紹了微信開(kāi)發(fā)之調(diào)起攝像頭、本地展示圖片、上傳下載圖片實(shí)例,具有一定的參考價(jià)值有興趣的可以了解一下。2016-12-12基于JavaScript實(shí)現(xiàn)輪盤(pán)抽獎(jiǎng)功能
對(duì)于有選擇困難癥的朋友來(lái)說(shuō),有個(gè)轉(zhuǎn)盤(pán)抽獎(jiǎng)功能再好不過(guò)了,今天通過(guò)本文給大家分享基于Js實(shí)現(xiàn)輪盤(pán)抽獎(jiǎng)功能,感興趣的朋友一起看看吧2023-01-01打開(kāi)新窗口關(guān)閉當(dāng)前頁(yè)面不彈出關(guān)閉提示js代碼
打開(kāi)新窗口關(guān)閉當(dāng)前頁(yè)面時(shí)總是彈出提示框,有沒(méi)有辦法避免它的彈出呢,答案是可以的接下來(lái)為大家分享一個(gè)方法可以解決此問(wèn)題,感興趣的你可不要錯(cuò)過(guò)了哈,希望可以幫助到你2013-03-03解決Babylon.js中AudioContext was not allowed&nbs
這篇文章主要介紹了解決Babylon.js中AudioContext was not allowed to start異常問(wèn)題方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04