美文网首页
小程序搜索文本高亮组件

小程序搜索文本高亮组件

作者: 柏龙 | 来源:发表于2018-11-28 14:42 被阅读0次

wxml

<text wx:for="{{textArr}}" wx:key="index" class="{{item == keyword ? 'highlight':'' }}">{{item}}</text>

js

// components/highlightText/index.js
Component({
  /**
   * Component properties
   */
  properties: {
    keyword: {
      type: String,
      observer: 'keywordChanged'
    },
    text: {
      type: String,
      observer: 'textChanged'
    }
  },

  /**
   * Component initial data
   */
  data: {
    textArr:[],
    skeyword: '',
    stext: ''
  },

  /**
   * Component methods
   */
  methods: {
    keywordChanged(newVal) {
      this.skeyword = newVal
      this.manage()
    },
    textChanged(newVal) {
      this.stext = newVal
      this.manage()
    },
    manage: function() {
      if (!this.stext) { return }
      this.manageText(this.stext, this.skeyword || "")
    },
    manageText: function (str, key) {
      if(key){
        this.setData({ textArr: str.replace(new RegExp(`${key}`, 'g'), `%%${key}%%`).split('%%') })
      }else{
        this.setData({ textArr: [str] })
      }
      // console.log('this.textArr', this.data.textArr)
    }
  },
  externalClasses: ['highlight']
})

pages

<highlight-text class='title' highlight='highlight' text="{{item.title}}" keyword="{{keyword}}"></highlight-text>

相关文章

网友评论

      本文标题:小程序搜索文本高亮组件

      本文链接:https://www.haomeiwen.com/subject/nqnaqqtx.html