美文网首页
wpy框架下封装一个简单小程序搜索组件

wpy框架下封装一个简单小程序搜索组件

作者: 89089答复 | 来源:发表于2018-11-07 20:20 被阅读34次
    属性 类型 默认值 说明
    :placeholder String 输入需要搜索的内容 输入框为空时占位符
    :inputValue String 输入框中的客户输入的内容
    @search.user EventHandle 点击输入框 输入后 调出的键盘右下角搜索按钮触发
    @disSearch.user EventHandle 搜索结束后点击输入框中的叉号icon触发清空搜索框

    示例代码:

      <!-- 搜索组件 -->
      <search  :placeholder="placeholder"       
               :inputValue="inputValue" 
               @search.user="search" 
               @disSearch.user="disSearch">
      </search>
    

    注:

    • 1,输入的值被搜索组件收集之后,通过:inputValue传递给页面,页面可以在data中声明一个属性进行搜集,
    • 2,输入值之后键盘在拉起状态下右下角的按钮被设置成了搜索,此时组件的搜索事件通过 @search.user暴露出来供使用者绑定自己的方法
    • 3,搜索结束后为了组件内清空输入框并把页面状态返回原来的状态,此时使用@disSearch.user方法进行触发
    • 4,叉号icon的出现和隐藏是通过在组件内判断:inputValue是否为空来进行触发
    • 5,两个String属性需要在data中声明才能使用并更改,两个方法必须写在methods

    搜索组件源码:

    <style lang="less">
        .search1 {
            display: flex;
            flex-direction: row;
            margin: 20rpx;
            .search_arr1 {
                border: 1px solid #ffffff;
                border-radius: 50rpx;
                display: flex;
                flex-direction: row;
                width: 900rpx;
                background-color: #ffffff;
                .searchcion1 {
                    margin: 10rpx 15rpx 10rpx 15rpx;
                    left: 25rpx;
                    z-index: 2;
                    width: 20px;
                    height: 20px;
                    text-align: center;
                }
                .searchcion2 {
                    margin: 10rpx 15rpx 10rpx 15rpx;
                    z-index: 2;
                    width: 20px;
                    height: 20px;
                    text-align: center;
                }
                .inputBox1 {
                    padding-top: 7rpx;
                    width: 550rpx;
                }
            }
        }
    </style>
    
    <template>
        <!-- 搜索 -->
        <view class="search1">
            <view class="search_arr1">
                <icon class="searchcion1" size='20' type='search'></icon>
                <input class="inputBox1" confirm-type="search" bindinput="bindKeyInput" bindconfirm="search" placeholder="{{placeholder}}" value="{{inputValue}}" />
                <icon class="searchcion2" size='20' type='clear' wx:if="{{inputValue}}" bind:tap="disSearch"></icon>
            </view>
        </view>
    </template>
    
    <script>
        import wepy from 'wepy'
        export default class Search extends wepy.component {
          config = {
            'component': true, // 自定义组件声明
            'usingComponents': {} // 可选项,用于引用别的组件
          };
          props = {
                // 静态传值
            placeholder: {
              type: String,
              default: '输入需要搜索的内容'
            },
                // 子向父单向动态传值
            inputValue: {
              type: String,
              default: '',
              twoWay: true
            }
          };
          data = {
            inputValue: ''
                // 搜索输入框的值
          }
          methods = {
                // 搜索输入框
            bindKeyInput(e) {
              this.inputValue = e.detail.value
            },
                // 键盘搜索按钮绑定的方法
            search() {
              this.$emit('search')
              this.$apply()
            },
                // 点击clear清除搜索框内容并拿到原来页面数据
            disSearch() {
              this.inputValue = ''
              this.$emit('disSearch')
              this.$apply()
            }
          }
        }
    </script>
    

    相关文章

      网友评论

          本文标题:wpy框架下封装一个简单小程序搜索组件

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