vue实现搜索功能且关键字高亮(vue+vxe-table)

本文介绍如何在Vue项目中结合vxe-table实现搜索功能,并通过关键字高亮显示。核心思路包括使用@input监听搜索输入,用RegExp全局匹配关键字,再用replace方法和v-html指令实现高亮。
摘要由CSDN通过智能技术生成

搜索效果如下

在这里插入图片描述
在这里插入图片描述

核心

在这里插入图片描述

1)利用@input属性来触发搜素功能

2)利用RegExp来对字符串来全局匹配关键字,利用replace方法来对匹配的关键字进行嵌入高亮的<vxe-table-column field="tern_name" type="html" title="问题" min-width="180"></vxe-table-column>表格,利用v-html来嵌入html标签来达到关键字高亮显示
  
(动态渲染任意 HTML 是非常危险的,很容易导致 XSS 攻击,请确保内容是可信的)

代码

template

        <el-form>
          <!-- 筛选关键字 -->
          <el-form-item>
            <el-input v-model="filterForm.ternName" placeholder="请输入问题" size="mini" @input="getQuestionList()"></el-input>
          </el-form-item>
        </el-form>
        <vxe-table @cell-click="cellClickEvent" :loading="questionLoading" height="100%" ref="questionTermTable"
            border="inner" highlight-current-row resizable keep-source :data="resultList" :keyboard-config="{isTab: true,isArrow: true, isEnter: true}">
            <vxe-table-column field="term_type" align="center" title="类目名称" width="120" :formatter="termTypeFormatter"></vxe-table-column>
            <vxe-table-column field="tern_name" type="html" title="问题" min-width="180"></vxe-table-column>
            <vxe-table-column field="term_description" title="备注" width="140"></vxe-table-column>
        </vxe-table>

后端返回的data数据

{
   
    "code": 200,
    "msg": null,
    "data": {
   
        "list": [
            {
   
                "create_by": 50,
                "term_description": "",
                "del_flag": 0
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中使用vxe-table和TypeScript进行国际化的步骤如下: 1. 首先,安装vxe-tablevue-i18n依赖: ```shell npm install vxe-table vue-i18n ``` 2. 在Vue的入口文件(通常是main.ts)中,引入vxe-tablevue-i18n,并进行相关配置: ```typescript import { createApp } from 'vue'; import App from './App.vue'; import XEUtils from 'xe-utils'; import VXETable from 'vxe-table'; import 'vxe-table/lib/style.css'; import { createI18n } from 'vue-i18n'; // 导入vxe-table的国际化语言包 import zhCN from 'vxe-table/lib/locale/lang/zh-CN'; import enUS from 'vxe-table/lib/locale/lang/en-US'; // 创建vue-i18n实例 const i18n = createI18n({ locale: 'zh-CN', // 设置默认语言 messages: { 'zh-CN': zhCN, 'en-US': enUS } }); // 使用vxe-table const app = createApp(App); app.use(VXETable); app.use(i18n); app.mount('#app'); ``` 3. 在组件中使用vxe-table的国际化功能,可以通过`$t`方法来获取对应的翻译文本: ```html <template> <div> <vxe-table :data="tableData"> <vxe-table-column type="index" title="序号"></vxe-table-column> <vxe-table-column field="name" title="姓名"></vxe-table-column> <vxe-table-column field="age" title="年龄"></vxe-table-column> </vxe-table> </div> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 20 }, { name: '李四', age: 25 }, { name: '王五', age: 30 } ] }; } }; </script> ``` 4. 在组件中使用vue-i18n的国际化功能,可以通过`$t`方法来获取对应的翻译文本: ```html <template> <div> <p>{{ $t('message.greeting') }}</p> </div> </template> <script> export default { mounted() { console.log(this.$t('message.greeting')); } }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值