微信小程序搜索组件wxSearch

发布于 2019年06月29日 15:31:08 - 技术分享 - 微信小程序

wxSearch

优雅的微信小程序搜索框

一、功能

  • 支持自定义热门key
  • 支持搜索历史
  • 支持搜索建议
  • 支持搜索历史(记录)缓存

二、使用

将wxSearch文件夹整个拷贝到根目录下

引入wxml文件

// wxml中引入模板
<import src="/wxSearch/wxSearch.wxml"/>
<template is="wxSearch" data="{{wxSearchData}}"/>
// wxss中引入
@import "/wxSearch/wxSearch.wxss";​

两种模板:一种为wxSearch作者提供的模板,另一种是weui提供的模板。

第一种模板

//wxSearch作者提供的模板
          <import src="/wxSearch/wxSearch.wxml"/>      
          <input bindinput="wxSearchInput" bindfocus="wxSerchFocus" value="{{wxSearchData.value}}" bindblur="wxSearchBlur" class="wxSearch-input" placeholder="搜索" />
          <button class="wxSearch-button" bindtap="wxSearchFn" size="mini" plain="true">搜索</button>
      </view>
</view>
<template is="wxSearch" data="{{wxSearchData}}"/>​

3b6c980ae9a8b39db787c9ed56f67246

第二种模板

            <import src="../../wxSearch/wxSearch.wxml"  />
            <icon class="weui-icon-search_in-box" type="search" size="14"></icon>
            <input type="text" class="weui-search-bar__input" placeholder="搜索" value="{{wxSearchData.value}}"
                   bindfocus="wxSerchFocus" bindinput="wxSearchInput" bindblur="wxSearchBlur"  />
                <icon type="clear" size="14"></icon>
            </view>
        </view>
    </view>
</view>
<template is="wxSearch" data="{{wxSearchData}}"  />​

注意:此模板需要使用weui.wxss文件,请在app.wxss文件中引入。

自定义搜索框

如果上面两种搜索样式都不喜欢,你也可以自己定义,只需要保证事件的触发即可。

// 搜索输入框需要保证下面三个事件的书写正确
<input bindfocus="wxSerchFocus" bindinput="wxSearchInput" bindblur="wxSearchBlur" />
// 搜索按钮的事件
<button bindtap="wxSearchFn"/>

js文件

var WxSearch = require('../../wxSearch/wxSearch.js');
var app = getApp();
Page({
  data: {
    // wxSearchData:{
    //   view:{
    //     isShow: true
    //   }
    // }
  },
  onLoad: function () {
    console.log('onLoad');
    var that = this;
    //初始化的时候渲染wxSearchdata
    WxSearch.init(that,43,['weappdev','小程序','wxParse','wxSearch','wxNotification']);
    WxSearch.initMindKeys(['weappdev.com','微信小程序开发','微信开发','微信小程序']);
  },
  wxSearchFn: function(e){
    var that = this
    WxSearch.wxSearchAddHisKey(that);
  },
  wxSearchInput: function(e){
    var that = this
    WxSearch.wxSearchInput(e,that);
  },
  wxSerchFocus: function(e){
    var that = this
    WxSearch.wxSearchFocus(e,that);
  },
  wxSearchBlur: function(e){
    var that = this
    WxSearch.wxSearchBlur(e,that);
  },
  wxSearchKeyTap:function(e){
    var that = this
    WxSearch.wxSearchKeyTap(e,that);
  },
  wxSearchDeleteKey: function(e){
    var that = this
    WxSearch.wxSearchDeleteKey(e,that);
  },
  wxSearchDeleteAll: function(e){
    var that = this;
    WxSearch.wxSearchDeleteAll(that);
  },
  wxSearchTap: function(e){
    var that = this
    WxSearch.wxSearchHiddenPancel(that);
  }
})

三、源码解读

wxSearch暴露的接口

module.exports = {
    init: init,
    initMindKeys: initMindKeys,
    wxSearchInput: wxSearchInput,
    wxSearchFocus: wxSearchFocus,
    wxSearchBlur: wxSearchBlur,
    wxSearchKeyTap: wxSearchKeyTap,
    wxSearchAddHisKey:wxSearchAddHisKey,
    wxSearchDeleteKey:wxSearchDeleteKey,
    wxSearchDeleteAll:wxSearchDeleteAll,
    wxSearchHiddenPancel:wxSearchHiddenPancel
}

init 初始化wxSearch

/**
参数: 
      1. that    var that = this后传入即可
      2. barHeight 搜索框高度  根据你设定的搜索框高度进行设定
      3. keys  数组  热门搜索的显示内容
      4. isShowKey  是否显示热门搜索  默认显示(false即可不显示)
      5. isShowHis  是否显示历史搜索  默认显示(false即可不显示)
      6. callBack  回调函数
源码做了什么
      1. 初始化了wxSearchData的内容
        wxSearchData:{
          view:{
              isShow: false,  //是否显示搜索界面,默认隐藏,当输入框获取焦点时显示
              searchbarHeght: 20,  //  根据手机屏幕高度和传入的barHeight进行计算
              isShowSearchKey: true,  //默认为true
              isShowSearchHistory: true, //默认为true
          }
          keys:[],//自定义热门搜索,传入的keys
          his:[],//历史搜索关键字,从缓存中获取
          value: ''  // 搜索内容
        }
    */
wxSearch.init(that, barHeight, keys, isShowKey, isShowHis, callBack);

initMindKeys 初始化mindKeys

// mindKeys即为所要检索内容的集合
var mindKeys = ['weappdev.com','微信小程序开发','微信开发','微信小程序'];
WxSearch.initMindKeys(mindKeys);

其他事件函数不再赘述,可能会有一些bug,可以根据情况自己进行修改。


感谢:https://www.jianshu.com/p/5c1fc51bdfc3

转载声明:本站文章无特别说明,皆为原创,版权所有,转载请注明:Dy大叔的日常

转载自 微信小程序搜索组件wxSearch | XDY.ME@Dy大叔的日常

XDY.ME@Dy大叔的日常