欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Element UI 表格中實現(xiàn)搜索關(guān)鍵字高亮顯示功能

 更新時間:2025年06月24日 10:57:36   作者:劉 懟懟  
在數(shù)據(jù)展示類應(yīng)用中,搜索功能是提升用戶體驗的關(guān)鍵模塊,而關(guān)鍵字高亮則能讓搜索結(jié)果更加直觀醒目,本文詳解如何在ElementUI中實現(xiàn)表格搜索與關(guān)鍵字高亮,結(jié)合樹形結(jié)構(gòu)遞歸處理及CSS樣式,提升數(shù)據(jù)可讀性與用戶體驗,感興趣的朋友跟隨小編一起看看吧

在數(shù)據(jù)展示類應(yīng)用中,搜索功能是提升用戶體驗的關(guān)鍵模塊,而關(guān)鍵字高亮則能讓搜索結(jié)果更加直觀醒目。本文將詳細(xì)介紹如何在 Element UI 框架中實現(xiàn)表格數(shù)據(jù)的搜索與關(guān)鍵字高亮功能,并結(jié)合樹形表格的特性提供完整解決方案。

一、功能實現(xiàn)背景與核心需求

當(dāng)表格中存在大量數(shù)據(jù)時,用戶需要通過搜索快速定位目標(biāo)內(nèi)容。關(guān)鍵字高亮的核心價值在于:

  • 明確標(biāo)識搜索結(jié)果的位置,減少用戶視覺掃描成本
  • 增強交互反饋,讓搜索操作更具即時性
  • 提升數(shù)據(jù)可讀性,尤其是在復(fù)雜表格結(jié)構(gòu)中

結(jié)合用戶提供的代碼,我們需要實現(xiàn)以下核心功能:

  1. 搜索輸入框的雙向綁定與事件監(jiān)聽
  2. 表格數(shù)據(jù)中指定列的關(guān)鍵字匹配
  3. 匹配文本的樣式高亮處理
  4. 樹形表格結(jié)構(gòu)下的遞歸高亮處理

二、核心代碼實現(xiàn)與解析

1. 搜索組件與表格結(jié)構(gòu)

首先看用戶提供的基礎(chǔ)代碼結(jié)構(gòu),搜索輸入框與表格的集成方式:

<el-form-item label="搜索內(nèi)容:">
  <el-input v-model="searchForm.searchContent" placeholder="請輸入搜索內(nèi)容"></el-input>
</el-form-item>
<div class="table-container">
  <el-table :data="visibleTableData" border style="width: 99%;" max-height="650px"
    :tree-props="{ children: 'details' }" row-key="id" @selection-change="handleSelectionChange">
    <!-- 表格列定義... -->
    <el-table-column align="center" label="資料內(nèi)容" prop="content">
      <template #default="scope">
        <span v-html="highlightText(scope.row.content, searchKeyword)"></span>
      </template>
    </el-table-column>
    <!-- 其他需要高亮的列... -->
  </el-table>
</div>

關(guān)鍵點解析

  • 通過 v-model 實現(xiàn)搜索輸入框與 searchForm.searchContent 的雙向綁定
  • 表格使用 :tree-props 配置樹形結(jié)構(gòu),支持父子節(jié)點嵌套
  • 需要高亮的列通過 v-html 渲染高亮后的文本,結(jié)合 highlightText 方法處理

2. 關(guān)鍵字高亮核心方法

下面是 highlightText 方法的完整實現(xiàn),建議添加到 Vue 實例的 methods 中:

methods: {
  // 關(guān)鍵字高亮處理方法
  highlightText(text, keyword) {
    // 處理空值或非字符串類型
    if (!text || typeof text !== 'string') return text;
    if (!keyword || typeof keyword !== 'string') return text;
    // 轉(zhuǎn)義正則表達(dá)式特殊字符
    const escapedKeyword = keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
    // 創(chuàng)建不區(qū)分大小寫的全局匹配正則
    const regex = new RegExp(escapedKeyword, 'gi');
    // 使用span包裹匹配內(nèi)容并添加高亮樣式
    return text.replace(regex, (match) => {
      return `<span class="highlight">${match}</span>`;
    });
  },
  // 搜索事件處理
  handleSearch() {
    // 獲取搜索關(guān)鍵字
    this.searchKeyword = this.searchForm.searchContent.trim();
    // 執(zhí)行搜索過濾(此處需根據(jù)實際數(shù)據(jù)結(jié)構(gòu)實現(xiàn))
    this.filterTableData();
  },
  // 表格數(shù)據(jù)過濾方法
  filterTableData() {
    if (!this.searchKeyword) {
      // 清空搜索時顯示全部數(shù)據(jù)
      this.visibleTableData = [...this.originalTableData];
      return;
    }
    // 遞歸過濾樹形表格數(shù)據(jù)(示例邏輯,需根據(jù)實際數(shù)據(jù)結(jié)構(gòu)調(diào)整)
    this.visibleTableData = this.originalTableData.filter(item => {
      return this.checkRowMatch(item, this.searchKeyword);
    });
  },
  // 檢查行數(shù)據(jù)是否匹配搜索條件
  checkRowMatch(row, keyword) {
    // 檢查當(dāng)前行需要高亮的字段
    const fields = ['content', 'projectName', 'form', 'receiverName'];
    for (const field of fields) {
      if (row[field] && row[field].toString().includes(keyword)) {
        return true;
      }
    }
    // 遞歸檢查子節(jié)點
    if (row.details && row.details.length > 0) {
      for (const child of row.details) {
        if (this.checkRowMatch(child, keyword)) {
          return true;
        }
      }
    }
    return false;
  }
}

3. 高亮樣式定制

為了讓高亮效果更明顯,需要在 CSS 中添加高亮樣式:

.highlight {
  background-color: #ffeb3b; /* 黃色背景,可自定義 */
  color: #333;
  font-weight: 500;
  padding: 0 2px;
  border-radius: 2px;
}

三、總結(jié)與擴展方向

通過上述方法,我們實現(xiàn)了 Element UI 表格中的關(guān)鍵字高亮功能,核心在于利用正則表達(dá)式替換匹配文本,并結(jié)合樹形結(jié)構(gòu)的遞歸處理。

到此這篇關(guān)于Element UI 表格中實現(xiàn)搜索關(guān)鍵字高亮顯示功能的文章就介紹到這了,更多相關(guān)Element UI 搜索關(guān)鍵字高亮內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue和SpringBoot之間傳遞時間的方法實現(xiàn)

    Vue和SpringBoot之間傳遞時間的方法實現(xiàn)

    本文主要介紹了Vue和SpringBoot之間傳遞時間的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Vue?watch監(jiān)聽使用的幾種方法

    Vue?watch監(jiān)聽使用的幾種方法

    watch是由用戶定義的數(shù)據(jù)監(jiān)聽,當(dāng)監(jiān)聽的屬性發(fā)生改變就會觸發(fā)回調(diào),這項配置在業(yè)務(wù)中是很常用。在面試時,也是必問知識點,一般會用作和computed進行比較。那么本文就來帶大家從源碼理解watch的工作流程,以及依賴收集和深度監(jiān)聽的實現(xiàn)
    2022-12-12
  • 基于Vuex無法觀察到值變化的解決方法

    基于Vuex無法觀察到值變化的解決方法

    下面小編就為大家分享一篇基于Vuex無法觀察到值變化的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue下history模式刷新后404錯誤解決方法

    vue下history模式刷新后404錯誤解決方法

    這篇文章主要介紹了vue下history模式刷新后404錯誤解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Vue3偵聽器的實現(xiàn)原理詳情

    Vue3偵聽器的實現(xiàn)原理詳情

    這篇文章主要介紹了Vue3偵聽器的實現(xiàn)原理詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • VueJs與ReactJS和AngularJS的異同點

    VueJs與ReactJS和AngularJS的異同點

    這篇文章主要為大家詳細(xì)介紹了VueJs與ReactJS和AngularJS的異同點,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 如何解決Element UI中NavMenu折疊菜單的坑

    如何解決Element UI中NavMenu折疊菜單的坑

    這篇文章主要介紹了如何解決Element UI中NavMenu折疊菜單的坑,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Vue實現(xiàn)模糊查詢filter()實例詳解

    Vue實現(xiàn)模糊查詢filter()實例詳解

    因為近日在學(xué)習(xí)并使用VUE,客戶有一個要求,要輸入框可模糊查詢并帶有下拉提示的應(yīng)用,數(shù)據(jù)從接口取,下面這篇文章主要給大家介紹了關(guān)于Vue實現(xiàn)模糊查詢filter()的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • vue項目如何使用three.js實現(xiàn)vr360度全景圖片預(yù)覽

    vue項目如何使用three.js實現(xiàn)vr360度全景圖片預(yù)覽

    這篇文章主要介紹了vue項目如何使用three.js實現(xiàn)vr360度全景圖片預(yù)覽,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue使用Echarts實現(xiàn)大屏可視化布局示例詳細(xì)講解

    Vue使用Echarts實現(xiàn)大屏可視化布局示例詳細(xì)講解

    這篇文章主要介紹了Vue使用Echarts實現(xiàn)大屏可視化布局示例,本文通過實例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01

最新評論