WeChatミニプログラムで検索キーワードを強調表示するサンプルコード

WeChatミニプログラムで検索キーワードを強調表示するサンプルコード

1. はじめに

プロジェクトで要件に遭遇したら、データを検索してキーワードを強調表示します。要件を受け取ったら、すぐに作業を開始します。まずはレンダリングをご覧ください。ソースコードは小さなプログラムコードスニペットにまとめられ、GitHub に公開されています。記事の下部にソースコードへのリンクがあります。

2. アイデア

ブロガーが最初に考えたのは、split を使うことでした。検索されたキーワードに応じて、バックグラウンドで返されたデータを処理し、indexOf でキーワードを見つけ、各単語に deep フィールドを追加しました。deep が true の場合は強調表示され、false の場合は通常のままになります。小さなプログラムなので、OP はそれを直接ハイライト コンポーネントにしました。コードは非常にシンプルで、実装手順は次のとおりです。

3. コードロジック

シミュレーションデータは以下のとおりです

リスト:[
 「武漢大学」、
 「華中科技大学」
 「華中師範大学」
 「中南経済法大学」
 「中国地質大学」
 「武漢理工大学」
 「華中農業大学」
 「武漢理工大学」
]、

検索キーでフィルタリングされたデータを格納するために、データに空の配列が定義されます。

filterList:[], //フィルター済み

wxml と検索方法

// wxml
<view class="search_box">
 <input type="text" placeholder="武漢の985/211大学を入力してください" bindinput="searchValue" class="search"/>
</ビュー>

// 検索メソッド searchValue(e){
 val = e.detail.value; とします。
 this.setData({ 値:val })
 長さが0より大きい場合
  this.setData({ フィルターリスト:[] })
  arr = [] とします。
  for(let i = 0;i < this.data.list.length;i++){
   if(this.data.list[i].indexOf(val) > -1){
    arr.push(このデータリスト[i])
   }
  }
  this.setData({ フィルターリスト: arr })
 }それ以外{
  this.setData({ フィルターリスト: [] })
 }
}

ハイライトコンポーネントのハイライトを定義します

"コンポーネントの使用": {
  "ハイライト":"../../components/ハイライト/ハイライト"
 }

ページ内の各項目とキーパラメータをコンポーネントに渡す

<view class="list_li" wx:for="{{ filterList }}" wx:key="index" data-index="{{ index }}" bindtap="pitchOn">
 <ハイライトテキスト="{{項目}}" キー="{{値}}" />
</ビュー>

コンポーネントで受信

プロパティ:
 テキスト:文字列、
 鍵:{
  タイプ:文字列、
  価値:''、
  オブザーバー:'_changeText'
 }
}

コンポーネントの初期データ

データ: {
 highlightList:[], //処理されたデータ}

コンポーネントのwxml

<text class="{{ item.deep ? 'green' : '' }}" wx:for="{{ highlightList }}" wx:key="index">{{ item.val }}</text>

コンポーネントハイライトデータ処理

// 空でないfilter_changeText(e){
  e.length > 0 && this.properties.text.indexOf(e) > -1 の場合{
   this._filterHighlight(this.properties.text, e);
  }
 },
 /**
 * キーワードの強調表示* @param { String } text - テキスト* @param { String } key - キーワード*/
 _filterHighlight(テキスト、キー){
  textList を text.split(""); とします。
  keyList を key.split(""); とします。
  リストを [] にします。
  for(let i = 0;i < textList.length;i++){
   obj = {
    深い:偽、
    val:テキストリスト[i]
   }
   リストをプッシュします。
  };
  for(let k = 0; k < keyList.length; k++){
   リスト.forEach(項目 => {
    if(item.val === keyList[k]){
     アイテムの深さを true に設定します。
    }
   })
  }
  this.setData({ ハイライトリスト:リスト })
 }

ソースコードのGitHubアドレス: https://github.com/pdd11997110103/ComponentWarehouse

WeChatミニプログラムで検索キーワードのハイライトを実装するためのサンプルコードに関するこの記事はこれで終わりです。より関連性の高いミニプログラムの検索キーワードのハイライトコンテンツについては、123WORDPRESS.COMの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • WeChatアプレットはカスタムコンポーネントナビゲーションを使用して現在のページを強調表示します
  • WeChatアプレットがグローバル検索コードの強調表示例を実装

<<:  xtrabackup による MySQL データベースのバックアップと復元

>>:  Telnet は Alpine イメージの busybox-extras に移動されました

推薦する

MYSQL(電話番号、IDカード)データ非感応化の実装

1. データ感度低下の説明日常の開発ニーズでは、データの感度低下が頻繁に発生します。たとえば、ID ...

JavaScript ベースのパスワード ボックス検証情報の実装

この記事では、パスワードボックスの検証情報を実装するためのJavaScriptの具体的なコードを例と...

Mysql ルートユーザーアカウントのパスワードをリセットする問題を解決する

問題の説明: mysqladmin.exe を使用してコマンドを実行すると、次のエラー メッセージが...

HTML要素にフォーカスを設定する方法

コードをコピーコードは次のとおりです。 <本文<フォームアクション="&quo...

MySQLデータベースの追加、削除、変更操作の詳細な説明

データの挿入テーブル名(列名1、列名2、列名3)の値(値1、値2、値3)に挿入します。ユーザーに(u...

広告を閉じる効果を実現するJavascript

参考までに、Javascript を使用して広告を閉じる方法に関するケース スタディを示します。詳細...

Linux で仮想コンソール セッションをロックする方法

共有システムで作業しているときは、他のユーザーが自分のコンソールを覗き込んで、自分が何をしているか見...

DockerHubイメージリポジトリの使い方の詳しい説明

これまで使用していたイメージはすべて DockerHub パブリック リポジトリから取得していました...

Vueコンポーネントのカスタムイベントの詳細な説明

目次要約する <テンプレート> <div> 要素 <h2>{{メ...

Docker を使用して開発環境を構築する方法 (Windows および Mac)

目次1. Dockerを使用する利点2. Dockerをインストールする1) LinuxにDocke...

MySQL の最初のインストールが成功した後にパスワードを初期化する手順

ファイルをディレクトリに解凍しますこれは解凍後のディレクトリですmy.iniファイルを入力しますダブ...

CSS3 のテキストとフォントの新しい設定

テキストシャドウテキストシャドウ: 水平オフセット 垂直オフセット ぼかし色互換性: IE10+ &...

vueの実践的な応用におけるvuexの永続性の詳細な説明

目次vuex 永続性要約するvuex 永続性vuex: ブラウザを更新すると、vuexの状態は初期状...

WeChatアプレットがSMS認証コード送信のカウントダウンを実装

この記事では、WeChatアプレットがSMS認証コードのカウントダウンを送信するための具体的なコード...

Ubuntu 18.04 のインストールで「ldlinux.c32 のロードに失敗しました」というエラーが表示され、解決手順がわかりません

序文私は Win7 を搭載した古いラップトップを持っています。古いシステムを維持しながら、同時に U...