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 に移動されました

推薦する

Nodejs でモジュール fs ファイルシステムを使用する方法

目次概要ファイル記述子同期、非同期、Promise同期書き込み非同期書き込み(推奨)約束​​の書き方...

HTML レイヤード ボックス シャドウ効果のサンプル コード

まず、画像を見てみましょう。今日はこのエフェクトを作成します。 実は、何でもないんです。Web ペー...

NestJsはMongooseを使用してMongoDBを操作する

最近、NestJs フレームワークを学び始めました。学習コストは他のフレームワークよりもはるかに高く...

CSSページ下部固定を実現する8つの方法の詳細な説明

ページを書いているときに、ページの内容が小さくてフッターがページの真ん中に留まってしまうといった状況...

DockerでGPUを使用するプロセスの詳細な説明

目次tf-gpu をダウンロード取得したtf-gpuイメージに基づいて独自のイメージを構築するイメー...

iPhone デバイスの WAP ページでフォントサイズが大きい問題の解決策

JavaScriptコントロールを使用したくない場合は、次の方法を試してください。 Safariブラ...

Vue 組み込みコンポーネントのキープアライブでの LRU アルゴリズムの使用

目次Vue の keep-alive 組み込みコンポーネントの使用でもこのアルゴリズムが使用されます...

MySQLを定期的にバックアップしてQiniuにアップロードする方法

ほとんどのアプリケーション シナリオでは、緊急時に備えて重要なデータをバックアップし、安全な場所に保...

Vue2/vue3 ルーティング権限管理方法の例

1. Vueルーティングの権限制御には一般的に2つの方法がありますa. ルーティングメタ情報(メタ)...

Vueは下部のポップアップウィンドウで複数選択を実装します

この記事の例では、下部のポップアップウィンドウで複数選択を実装するためのVueの具体的なコードを共有...

MySQL 8.0.13 のインストールと設定方法のグラフィックチュートリアル (Win10 の場合)

MySQL 8.0.13 のインストールと設定方法を皆さんと共有したいと思います。お役に立てれば幸...

MySQL マルチバージョン同時実行制御 MVCC の基本原理の分析

目次1 トランザクションの同時実行で発生する問題1.1 ダーティリード1.2 繰り返し不可能な読み取...

mysql スケジュールタスク (イベント イベント) の詳細な説明

1. イベントの簡単な紹介イベントは、MySQL が特定の時間に呼び出す手続き型データベース オブジ...

クラウドサーバーパゴダパネルの詳細なインストール手順

目次0x01. パゴダパネルをインストールする0x02. サーバーポートを開く0x03. ブラウザを...

iframeをカプセル化するvueコンポーネントを開発する

目次1. コンポーネントの紹介2. コンポーネントの内部構造とロジック1. コード組織構造2. マッ...