记录一次element ui+ Vue 下的实现文本中关键字添加背景颜色

实现效果如图,根据违规词,在文本中查找并添加背景颜色
思路是:首先尝试了es6的新语法 。这个东西连函数都能往里放,本来是指望能在其中直接添加html标签的形式实现可惜失败了,有时间再试试。
第一步是匹配字符串中的关键字,js中有一个常用的split方法:split() 方法用于把一个字符串分割成字符串数组并返回关键字。如匹配“最好” 则 “将心比心,没有最好只有更好” =》[ “将心比心,没有”, “只有更好” ]。
然后将数组两个值一起显示并在中间再插入关键字给其包裹并添加样式即可

      <el-table-column label="违规内容" prop="text">
        <template slot-scope="scope">
          {{scope.row.text[0]}}<i v-show="scope.row.text.length !== 1" style="background-color: #ef7777">{{scope.row.keywords}}</i>{{scope.row.text[1]}}
        </template>
      </el-table-column>

但有两个考虑: 1.如果字符串中没有关键字则数组中只有一个值,(如果关键字在串头串尾则会生成一个空值的数组)
如匹配“没有”,则在第一位为空串

2.如果本来没有关键字,可是你在文本中却强行显示了那么字符串内容就多了。 解决方案是在处理数据的值后,根据数组长度是否为1来判断关键字是否显示 如上代码显示 scope.row.text.length !== 1 说明文本中存在关键字,则进行显示。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Element UI 的 Input 组件和 Autocomplete 组件来实现搜索框功能。 首先,需要在页面引入 Element UI 库和 Vue.js 库: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Vue + Element UI Search Box</title> <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> </head> <body> <div id="app"> <el-autocomplete v-model="keyword" :fetch-suggestions="querySearchAsync" placeholder="请输入搜索关键字"> <el-button slot="append" icon="el-icon-search" @click="search">搜索</el-button> </el-autocomplete> </div> <script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https://unpkg.com/element-ui/lib/index.js"></script> <script> new Vue({ el: '#app', data() { return { keyword: '', suggestions: [] }; }, methods: { querySearchAsync(queryString, cb) { // 在这里实现异步搜索逻辑,返回搜索结果数组 }, search() { // 在这里实现搜索操作 } } }); </script> </body> </html> ``` 然后,在 Vue 实例定义一个 data 对象来保存搜索关键字和搜索结果,以及两个方法来实现搜索功能: - querySearchAsync:调用异步方法进行搜索,返回搜索结果数组给 Autocomplete 组件。 - search:根据搜索关键字进行具体的搜索操作。 接下来,需要在 querySearchAsync 方法实现异步搜索逻辑,可以使用 Ajax 或者 Fetch API 发送异步请求获取搜索结果。搜索结果数组的格式需要符合 Autocomplete 组件的要求,即每个元素都是一个对象,包含 value 和 label 两个属性,分别表示搜索结果的值和显示文本。 ```javascript methods: { querySearchAsync(queryString, cb) { axios.get('/api/search', { params: { q: queryString } }).then(response => { const data = response.data; const suggestions = data.map(item => { return { value: item.id, label: item.name }; }); cb(suggestions); }).catch(error => { console.error(error); }); }, search() { // 根据 this.keyword 进行具体的搜索操作 } } ``` 以上代码使用 axios 库发送异步请求,返回的数据是一个包含多个对象的数组,每个对象包含 id 和 name 两个属性。在 querySearchAsync 方法将数组转换成 Autocomplete 组件需要的格式,并调用 cb 方法将搜索结果返回给 Autocomplete 组件。 最后,在 search 方法可以根据 this.keyword 属性进行具体的搜索操作,例如跳转到搜索结果页面、展示搜索结果列表等。 完成以上步骤后,就可以实现一个基于 Vue.jsElement UI 的纯前端搜索框。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值