最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

微信小程序实现全局搜索时搜索结果高亮

来源:动视网 责编:小采 时间:2020-11-27 19:49:34
文档

微信小程序实现全局搜索时搜索结果高亮

微信小程序实现全局搜索时搜索结果高亮:这次给大家带来微信小程序实现全局搜索时搜索结果高亮,微信小程序实现全局搜索时搜索结果高亮的注意事项有哪些,下面就是实战案例,一起来看一下。需求最近在做微信小程序的时候,需要实现在搜索框的输入内容的时候实现全局匹配实现高亮效果,目前的思路是,
推荐度:
导读微信小程序实现全局搜索时搜索结果高亮:这次给大家带来微信小程序实现全局搜索时搜索结果高亮,微信小程序实现全局搜索时搜索结果高亮的注意事项有哪些,下面就是实战案例,一起来看一下。需求最近在做微信小程序的时候,需要实现在搜索框的输入内容的时候实现全局匹配实现高亮效果,目前的思路是,


这次给大家带来微信小程序实现全局搜索时搜索结果高亮,微信小程序实现全局搜索时搜索结果高亮的注意事项有哪些,下面就是实战案例,一起来看一下。

需求

最近在做微信小程序的时候,需要实现在搜索框的输入内容的时候实现全局匹配实现高亮效果,目前的思路是,递归后台来返回的数据,并将对象的value值替换为需要的dom节点,并且通过rich-text来实现,高亮效果。

代码

wxml:

<view class='homePage'>
 <input bindinput="bindKeyInput"></input>
 <view wx:for="{{newJson}}" wx:for-item='item' wx:key>
 <rich-text nodes="{{item.name}}"></rich-text> 
 <rich-text nodes="{{item.address}}"></rich-text> 
 <rich-text nodes="{{item.age}}"></rich-text>
 <view wx:if="{{item.aihao}}" wx:for="{{item.aihao}}" wx:for-item='sitem' wx:key>
 <rich-text nodes="{{sitem}}"></rich-text> 
 </view>
 </view>
</view>

js:

//index.js
const app = getApp()
Page({
 data: {
 json: [{ name: 'eiolewkfp', age: 'awdqwwdk', address: 'aueifwhefwfheffoewjowef',aihao:['sdsd','sdfsd','sdsf']}, { name: '98797', age: '6544656', address: '65494364' }], // 可以是任何类型的数据
 newJson: '',
 tempText:''
 },
 onLoad: function (options) {
 this.setData({
 newJson:this.data.json
 })
 },
 digui: function (newJson,obj,key) { // 递归方法,来遍历最内层的字符串并通过正则来替换
 var that = this;
 var reg = new RegExp(that.data.tempText,'g');
 if (newJson.constructor == Array) { 
 newJson.forEach(function (item,index) {
 if (item.constructor == String){
 obj[key].splice(index, 1, item.replace(reg, "<span style='color:red'>" + that.data.tempText + "</span>"))
 }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) { // 这里做全局替换
 if(key){
 obj[key] = newJson.replace(reg, "<span style='color:red'>" + that.data.tempText + "</span>")
 }
 }
 },
 bindKeyInput: function (e) { // 每次输入来监听键盘,处理匹配的数据
 var text = e.detail.value;
 this.setData({
 tempText:text
 })
 var newJson = JSON.parse(JSON.stringify(this.data.json)); // 实现深复制
 
 this.digui(newJson);
 this.setData({
 newJson:newJson
 })
 }
})

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

vue.js中created方法使用步骤

Angular4中router使用技巧

文档

微信小程序实现全局搜索时搜索结果高亮

微信小程序实现全局搜索时搜索结果高亮:这次给大家带来微信小程序实现全局搜索时搜索结果高亮,微信小程序实现全局搜索时搜索结果高亮的注意事项有哪些,下面就是实战案例,一起来看一下。需求最近在做微信小程序的时候,需要实现在搜索框的输入内容的时候实现全局匹配实现高亮效果,目前的思路是,
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top