vue+Element实现搜索功能关键字高亮(Vue开发五)

最近做了一个日志搜索的需求,要在页面上实现海量日志的关键字搜索。为了搜索更清晰,我最终实现了多条件搜索,且搜索结果的记录中的关键字全部高亮。

一、实现思路
1 实时监控表格,实现关键字的定位;
2 点击搜索按钮以后,实现记录中关键字的样式变化(即高亮)。
二、实现过程
1 搜索条件表单

了解了实现思路,就让我们一起来看一下实现过程(关键位置均给了注释)


          
            
              
               
              
            
              
                
                 
                
            
          
      		    
      		      
      				     
                  
      		      
              
                
                  查询
                
              
      		     
      			
2 表格部分

				
          
        
			
3.实时监听表格
computed:{
    // 实时监听表格
    tables: function() {
      const search = this.listQuery.queryMessage||this.listQuery.queryMessage2||this.listQuery.queryMessage3
      if (search) {
        return this.logInfosData.filter(dataNews => {
          return Object.keys(dataNews).some(key => {
            return String(dataNews[key]).toLowerCase().indexOf(search) > -1
          })
        })
      }
      return this.tableData
    }
  }
4.修改关键字样式
// 筛选变色
    showData(val) {
      val = val + '';
      if (this.checkPara(val,this.listQuery.queryMessage)||this.checkPara(val,this.listQuery.queryMessage2)
        ||this.checkPara(val,this.listQuery.queryMessage3)) {
        //如果搜索结果记录包含关键字中的任何一个,那么修改样式
        return val.replace(this.listQuery.queryMessage'' + this.listQuery.prodcd + '')
          .replace(this.listQuery.queryMessage2, '' + this.listQuery.queryMessage3 + '')
         
      } else {
        return val //不做任何修改
      }
    },
    //判断搜索记录是否包含某个关键字
    checkPara(val,para){
       if (val.indexOf(para) !== -1 && para !== ''){
         return true;
       }else {
         return false
       }
    }
三、总结
实现以后会觉得思路很简单。其实任何一个多么复杂的需求,只要在做之前,理清思路,分成一个个小的实现过程,那么就自然很简单,而且效率也很高。这也是我的真切感受。

你可能感兴趣的:(vue,Element)