摘要:需求最近在做微信小程序的時候,需要實(shí)現(xiàn)在搜索框的輸入內(nèi)容的時候?qū)崿F(xiàn)全局匹配實(shí)現(xiàn)高亮效果,目前的思路是,遞歸后臺來返回的數(shù)據(jù),并將對象的值替換為需要的節(jié)點(diǎn),并且通過來實(shí)現(xiàn),高亮效果。
需求
最近在做微信小程序的時候,需要實(shí)現(xiàn)在搜索框的輸入內(nèi)容的時候?qū)崿F(xiàn)全局匹配實(shí)現(xiàn)高亮效果,目前的思路是,遞歸后臺來返回的數(shù)據(jù),并將對象的value值替換為需要的dom節(jié)點(diǎn),并且通過rich-text來實(shí)現(xiàn),高亮效果。
思路在實(shí)現(xiàn)的過程中主要考慮,不同類型的數(shù)據(jù)結(jié)構(gòu),過濾掉特殊符號,url這些基本需求;同時在實(shí)現(xiàn)的過程中每次都要去處理最原始的數(shù)據(jù),這就需要考慮到對象的深拷貝問題,目前所采用的方法是通過JSON.parse(JSON.stringify(str))來處理,因?yàn)樵谶@個全局搜索的項(xiàng)目中不太會用到函數(shù)這些對象。最后通過replace方法來處理這些目標(biāo)字符串。
截圖 代碼wxml:
js:
//index.js //index.js const app = getApp() Page({ data: { homeUrl: "../index/index", mineUrl: "../mine/mine", newFillUrl: "../newFill/newFill", historyUrl: "../historyData/historyData", json: [{ name: "你是誰", age: "awdqwwk", address: "auemnkjkifwh{efwfheffoewjowef", aihao: ["sdsd", "sdfsd", "sdsf"] }, { name: "98797", age: "6544656", address: "https://www.baidu.com/" }], newJson: "", tempText: "", showShadow: false, chartNumber: 0, newStr:"" }, /** * 生命周期函數(shù)--監(jiān)聽頁面加載 */ onLoad: function (options) { this.setData({ newJson: this.data.json }) }, haha: function () { console.log("haha"); wx.navigateTo({ url: "../mine/mine", }) }, digui: function (newJson, obj, key) { var urlReg = new RegExp("(https ?|ftp | file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]") var that = this; var reg = that.data.tempText; if (that.data.tempText == "." || that.data.tempText == "" || that.data.tempText == "?" || that.data.tempText == "[" || that.data.tempText == "]") { reg = "" + that.data.tempText } var reg = new RegExp(reg, "ig"); if (newJson.constructor == Array) { newJson.forEach(function (item, index) { if (item.constructor == String && !urlReg.test(item)) { obj[key].splice(index, 1, item.replace(reg, function (index) { if (that.data.newStr != ""){ that.setData({ chartNumber: (that.data.chartNumber + 1) }) } return "" + that.data.tempText + "" })) } else { that.digui(item, newJson); } }); } else if (newJson.constructor == Object) { var json = {}; for (var key in newJson) { json[key] = newJson; that.digui(newJson[key], newJson, key); } } else if (newJson.constructor == String && !urlReg.test(newJson)) { // 這里做全局替換 if (key) { obj[key] = newJson.replace(reg, function () { if (that.data.newStr != "") { that.setData({ chartNumber: (that.data.chartNumber + 1) }) } return "" + that.data.tempText + "" }) } } }, showBgShadow: function (e) { this.setData({ showShadow: e.detail.showBgShadow }) }, bindKeyInput: function (e) { var regChart = this.data.regChart; var text = e.detail.value; var newStr = ""; newStr = text.replace(/[@#$\%^&*{}:"L<>?.]/, "") this.setData({ tempText: newStr, chartNumber: 0, newStr: newStr }) var newJson = JSON.parse(JSON.stringify(this.data.json)); this.digui(newJson); this.setData({ newJson: newJson }) } })
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/94323.html
摘要:四最后一點(diǎn)點(diǎn)感悟本文總結(jié)的比較淺顯很多地方說的也不是太詳細(xì)歡迎大家留言一起交流探討堅(jiān)持學(xué)習(xí)不斷探索總結(jié)路漫漫其修遠(yuǎn)兮吾將上下而求索參考資料官方文檔微信小程序官網(wǎng)開發(fā)文檔官方開發(fā)文檔 一、微信小程序wepy框架簡介: 微信小程序WePY框架是騰訊官方推出來的框架,類似的框架還有美團(tuán)的mpvue,京東的Taro等; 目前公司開發(fā)小程序主要用到的是微信原生方法和官方的wepy框架; wepy...
摘要:微信小程序小米事先聲明,這是一個高仿小米的微信小程序。寫完之后查文檔才發(fā)現(xiàn),微信小程序官方提供了自定義組件的方法有需要的可以查看微信小程序文檔寫完這個組件后我總解了一下需要注意的問題選中了的當(dāng)前頁面,再次點(diǎn)擊因該無效。 微信小程序-小米Lite 事先聲明,這是一個高仿小米Lite的微信小程序。 我呢現(xiàn)在是一個大三快大四的學(xué)生,這個小程序花了我很長時間,把能寫的功能基本上都寫了。我秉著分...
摘要:歌曲來源音樂說明目前只有體驗(yàn)版,如果有興趣的同學(xué)可以私聊我,我?guī)湍尤?,名額有限。 歌曲來源:QQ音樂 說明 目前只有體驗(yàn)版,如果有興趣的同學(xué)可以私聊我,我?guī)湍尤?,名額有限。 因?yàn)閭€人開發(fā)者無法發(fā)布在線音樂播放小程序,所以開發(fā)該小程序目的只為學(xué)習(xí)小程序開發(fā); 小程序涉及到到所有歌曲資源都來源于QQ音樂,部分API由本人對QQ音樂接口進(jìn)行了二次封裝(我會另外再寫一篇文章專門用來分享...
摘要:可以實(shí)現(xiàn)在小程序下渲染內(nèi)容,支持圖片表格在內(nèi)的大部分特性。運(yùn)行效果其他項(xiàng)目地址小程序推薦百科知識詞典 wemark可以實(shí)現(xiàn)在小程序下渲染Markdown內(nèi)容,支持圖片、表格在內(nèi)的大部分Markdown特性。 特性 以小程序自定義組件形式提供,可直接引入使用 支持大部分markdown標(biāo)記的解析、渲染 支持代碼表格、代碼高亮、HTML視頻等特性 支持使用原生rich-text進(jìn)行渲染 ...
閱讀 3592·2021-11-18 13:20
閱讀 2738·2021-10-15 09:40
閱讀 1765·2021-10-11 10:58
閱讀 2130·2021-09-27 13:36
閱讀 2602·2021-09-07 10:06
閱讀 1862·2021-08-11 11:21
閱讀 1435·2019-08-29 17:04
閱讀 2090·2019-08-29 14:06