전역 검색 코드 강조 표시를 구현하는 WeChat 애플릿의 예

亚连
풀어 주다: 2018-05-28 10:58:39
원래의
1458명이 탐색했습니다.

이 글에서는 주로 WeChat 애플릿의 전역 검색 코드 강조 표시에 대한 예를 소개하고 참고용으로 제공합니다.

Requirements

최근 WeChat 애플릿 작업을 할 때 검색창에 콘텐츠를 입력할 때 전역 일치 및 강조 효과를 구현해야 하는 경우 현재 아이디어는 배경을 반복하여 데이터를 반환하고 개체를 넣는 것입니다. value 값은 필요한 DOM 노드로 대체되며, Rich-Text를 통해 강조 효과를 얻습니다.

Code

wxml:

<view class=&#39;homePage&#39;>
  <input bindinput="bindKeyInput"></input>
  <view wx:for="{{newJson}}" wx:for-item=&#39;item&#39; 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=&#39;sitem&#39; wx:key>
      <rich-text nodes="{{sitem}}"></rich-text>  
    </view>
  </view>
</view>
로그인 후 복사

js:

//index.js
const app = getApp()

Page({
  data: {
    json: [{ name: &#39;eiolewkfp&#39;, age: &#39;awdqwwdk&#39;, address: &#39;aueifwhefwfheffoewjowef&#39;,aihao:[&#39;sdsd&#39;,&#39;sdfsd&#39;,&#39;sdsf&#39;]}, { name: &#39;98797&#39;, age: &#39;6544656&#39;, address: &#39;65494364&#39; }], // 可以是任何类型的数据
    newJson: &#39;&#39;,
    tempText:&#39;&#39;
  },
  onLoad: function (options) {
    this.setData({
      newJson:this.data.json
    })
  },
  digui: function (newJson,obj,key) { // 递归方法,来遍历最内层的字符串并通过正则来替换
    var that = this;
    var reg = new RegExp(that.data.tempText,&#39;g&#39;);
    if (newJson.constructor == Array) { 
      newJson.forEach(function (item,index) {
        if (item.constructor == String){
          obj[key].splice(index, 1, item.replace(reg, "<span style=&#39;color:red&#39;>" + 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=&#39;color:red&#39;>" + 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
    })
  }

})
로그인 후 복사

위 내용은 앞으로 모든 사람에게 도움이 되기를 바랍니다.

관련 기사:

js+css로 타이핑 효과 구현

react redux 미들웨어 사용에 대한 간략한 소개

웹팩 소스 코드의 로더 메커니즘에 대한 자세한 설명

위 내용은 전역 검색 코드 강조 표시를 구현하는 WeChat 애플릿의 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿