iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >微信小程序自定义可搜索的picker组件示例详解
  • 671
分享到

微信小程序自定义可搜索的picker组件示例详解

2024-04-02 19:04:59 671人浏览 泡泡鱼
摘要

PC端开发,组件库是有可搜索的select可用 但是在手机端微信小程序开发的时候,使用select就不太合适了,小程序端的选项一般都是是使用picker 但是,问题又来了,微信小程序

PC端开发,组件库是有可搜索的select可用

但是在手机端微信小程序开发的时候,使用select就不太合适了,小程序端的选项一般都是是使用picker

但是,问题又来了,微信小程序官方并没有给我们提供可搜索的Picker

人家没给,那我们就自定义一个呗

别的到没啥,就是感觉交互上有点奇怪

具体效果如下图所示:

废话不多说了,上代码:

myPicker.wxml

<view class="date-background" hidden="{{flag}}">
  <view class='date-gray-background' bindtap='hiddeDatePicker'></view>
  <view class='date-container'>
    <view class="transparent">
      <view class='date-confirm'>
        <view bindtap='hiddeDatePicker'>取消</view>
        <van-search
          value="{{searchValue}}"
          input-align="center"
          placeholder="请输入学校名称关键词"
          bind:change="searchSchool"
        />
        <view bindtap='confirm'>确定</view>
      </view>
      <picker-view
        indicator-class="indicator"
        value="{{setValues}}"
        bindchange="bindChange"
        bindpickend="_bindpickend"
        indicator-style="height: 100rpx;"
        mask-style="height:900rpx;"
        style="width: 100%; height: 90%;position:absolute;bottom:0rpx;text-align:center;background:white"
      >
 
        <picker-view-column class="pickViewColumn">
          <view wx:for="{{items}}" wx:key="id" style="line-height: 104rpx">{{item.name}}</view>
        </picker-view-column>
      </picker-view>
    </view>
  </view>
</view>

myPicker.js

Component({
  options: {
    // 在组件定义时的选项中启用多slot支持
    multipleSlots: true
  },
  
  properties: {
    // 初始化日期
    initValue: {
      type: String,
      value: ''
    },
    // 父组件传递过来的数据列表
    items: {
      type: Array,
      value: []
    }
  },
  
  data: {
    //控制picker的显示与隐藏
    flag: true,
    // 用户输入的学校关键词
    searchValue:'',
    // 滚动选择的学校
    setValues: [],
    // 滚动选择的学校索引
    selectSchoolIndex:''
  },
  
  methods: {
  
  searchSchool(e)
  {
    let self = this;
    self.triggerEvent('searchSchool', e.detail);
  },
  
  hiddeDatePicker()
  {
    let self = this;
    self.setData({
      flag: !self.data.flag
    })
  },
  
  showDatePicker()
  {
    let self = this;
    self.setData({
      flag: !self.data.flag
    })
    self.getItems()
  },
  
  confirm()
  {
    let self = this;
    // 获取用户选择的学校
    let item = self.data.items[self.data.selectSchoolIndex]?self.data.items[self.data.selectSchoolIndex]:self.data.items[0];
    // 通过发送自定义事件把用户选择的学校传递到父组件
    self.triggerEvent('confirm', item);
  },
  
  bindChange(e)
  {
    let self = this;
    self.setData({
      // 用户选择的学校索引
      selectSchoolIndex:e.detail.value[0]
    })
  },
  
  getItems(e)
  {
    let self = this;
    if (self.data.items.length && self.data.initValue) {
      let items = self.data.items
      for (let i = 0; i < items.length; i++) {
        if (self.data.initValue == items[i].id) {
          self.setData({
            setValues: [i]
          })
          return
        }
      }
    }
    self.setData({
      setValues: [0]
    })
  },
},
})

myPicker.wxss

.date-background {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
}
.date-gray-background {
    position: absolute;
    width: 100%;
    top: 0;
    background: rgba(0, 0, 0, .5);
    height: calc(100% - 500rpx);
}
.date-container {
    position: absolute;
    width: 100%;
    height: 900rpx;
    overflow: hidden;
    background: #fff;
    bottom:0;
    z-index: 1000;
}
 
.date-confirm {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding:0 20rpx;
    font-size:34rpx;
    line-height: 70rpx;
    color:var(--ThemeColor)
}
.pickViewColumn{
    height: 900rpx;
    margin-top: -300rpx;
}
.indicator{
  height: 80rpx;
  border: 1rpx solid #E5E8E8;
  }

myPicker.JSON

{
  "component": true,
  "usinGComponents": {
      "van-search": "@vant/weapp/search/index"
  }
}

调用组件:

accountbindTwo.json

{
  "usingComponents": {
    "myPicker":"/components/myPicker/myPicker"
  }
}

accountbindTwo.wxml

            <!-- 填写学校 -->
            <view class="Info_Item Item_School">
                <view class="School FLOAT_LEFT" >学校 /University : </view>
                <view class="require FLOAT_RIGHT">*</view>
                <!-- 学校输入框 -->
                <view class="FLOAT_RIGHT">
                    <view  class="School_Input"  style="{{school_id?'':'color:#808080'}};{{schoolValidate?'border:1rpx solid #BD3731':''}}" bindtap="showSchoolPicker">{{school_name}}
                    </view>
                    <!-- 学校输入框右侧三角按钮 -->
                        <view class="schoolDrop_icon" >
                            <van-image width="22rpx" height="16rpx" src="/images/expand.png" ></van-image>
                        </view>
                </view>
            </view>

accountbindTwo.js

  
  onLoad: function (options) {
    let self = this;
    // 获取自定义学校picker实例
    self.demopicker = self.selectComponent("#demopicker");
  },

  showSchoolPicker()
  {
    let self = this;
    self.demopicker.showDatePicker()
  },
  
  confirmSchool(e){
    let self = this;
    // 隐藏自定义picker
    self.demopicker.hiddeDatePicker();
  },

以上就是自定义可搜索的picker组件的代码以及调用实例

最后,提示一下,我这里的搜索框使用的是vant微信小程序组件库,picker使用的微信小程序的原生组件。这个需要注意一下。

到此这篇关于微信小程序自定义可搜索的picker组件的文章就介绍到这了,更多相关微信小程序picker组件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 微信小程序自定义可搜索的picker组件示例详解

本文链接: https://www.lsjlt.com/news/151558.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序自定义可搜索的picker组件示例详解
    PC端开发,组件库是有可搜索的select可用 但是在手机端微信小程序开发的时候,使用select就不太合适了,小程序端的选项一般都是是使用picker 但是,问题又来了,微信小程序...
    99+
    2024-04-02
  • 微信小程序如何自定义可搜索的picker组件
    本篇内容介绍了“微信小程序如何自定义可搜索的picker组件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!代码:myPicker.wxml&...
    99+
    2023-07-02
  • 微信小程序自定义组件(超详细)
    💌写在开头: 哈喽呀,亲爱的宝子们。 今天要介绍的是关于小程序自定义组件的相关内容。 主要分以下几个部分:组件的创建,组件的结构,组件的引用,组件样式,组件的生命周期等。 ...
    99+
    2023-09-09
    微信小程序 小程序 前端
  • 微信小程序自定义组件Component的代码详解
    目录1- 前言2- 组件文件新建2.1 定义组件2.2 注册组件2.3 使用组件2.4 图参考3- 外部类和样式隔离3.1定义组件3.2 使用组件3.3 图解释4- 组件插槽4.1 ...
    99+
    2023-03-02
    微信小程序自定义组件详解 微信小程序 component 微信小程序自定义组件
  • 【微信小程序】自定义组件(二)
    🎁写在前面: 观众老爷们好呀,这里是前端小刘不怕牛牛频道,小程序系列文章又更新了呀。 上文我们讲解了微信小程序自定义组件的入门知识,那么今天牛牛就来讲讲自定义组件的进阶知识吧,...
    99+
    2023-09-01
    微信小程序 小程序 前端
  • 微信小程序自定义tabbar组件
    本文实例为大家分享了微信小程序自定义tabbar组件的具体代码,供大家参考,具体内容如下 由于项目需求,必须自己写组件: 第一步:在App.json中配置tabBar,自定也组件也必...
    99+
    2024-04-02
  • 【微信小程序】自定义组件(一)
    🎁写在前面: 观众老爷们好呀,这里是前端小刘不怕牛牛频道,小程序系列文章又更新了呀。 今天牛牛带来的是微信小程序的自定义组件入门知识,赶紧拿起小本本做笔记呀! ...
    99+
    2023-09-05
    微信小程序 前端 小程序
  • 【小程序】微信小程序自定义组件Component详细总结
    1- 前言 在本文中你将收获 小程序如何使用自定义组件自定义组件之间的传值自定义组件中插槽的使用 2- 组件文件新建 2.1 定义组件 在根目录新建components文件夹,建立cell 文件夹,...
    99+
    2023-09-23
    微信小程序 小程序 前端 开发语言 javascript
  • 微信小程序怎么自定义组件
    这篇文章主要讲解了“微信小程序怎么自定义组件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序怎么自定义组件”吧!组件模版和样式类似于页面,自定义组件拥有自己的 wxml&n...
    99+
    2023-06-26
  • 微信小程序自定义地址组件
    本文实例为大家分享了微信小程序自定义地址组件的具体代码,供大家参考,具体内容如下 项目需求 需要调用后台传过来的地址,存储地址时存的是地址的id,所以市面上的地址组件均不符合我的需求...
    99+
    2024-04-02
  • 微信小程序实现自定义弹窗组件的示例代码
    目录编写组件代码Dialog.wxmlDialog.jsDialog.wxss调用自定义组件上一篇中说的是小程序自带的弹窗组件,今天,我们来试试小程序的自定义组件,我们自定义一个带确...
    99+
    2024-04-02
  • 微信小程序自定义时间段picker选择器
    本文实例为大家分享了微信小程序自定义时间段picker选择器的具体代码,供大家参考,具体内容如下 想实现一个可以选择年份和时间段的日期选择器,如下所示 微信小程序自带的picker...
    99+
    2024-04-02
  • 微信小程序中如何自定义组件
    这篇文章将为大家详细讲解有关微信小程序中如何自定义组件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在微信小程序开发过程中,对于一些可能在多个页面都使用的页面模块,可以把它封装成一个组件,以提高开发效率。...
    99+
    2023-06-29
  • 微信小程序如何自定义tabbar组件
    这篇文章主要讲解了“微信小程序如何自定义tabbar组件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序如何自定义tabbar组件”吧!由于项目需求,必须自己写组件:第一步:在App...
    99+
    2023-06-14
  • 微信小程序自定义顶部导航组件
    本文实例为大家分享了微信小程序自定义顶部导航组件,供大家参考,具体内容如下 在components中新建文件夹navbar components/navbar.wxml <!-...
    99+
    2024-04-02
  • 微信小程序实现自定义拍摄组件
    微信小程序实现自定义摄像头(在摄像头内添加提示信息),供大家参考,具体内容如下 摄像头组件(wxml) <!-- 拍照功能 自定义摄像头           bindtap:t...
    99+
    2024-04-02
  • 微信小程序怎么自定义地址组件
    本文小编为大家详细介绍“微信小程序怎么自定义地址组件”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序怎么自定义地址组件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。项目需求需要调用后台传过来的地址,存储...
    99+
    2023-07-02
  • 微信小程序自定义波浪组件怎么用
    这篇文章主要为大家展示了“微信小程序自定义波浪组件怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序自定义波浪组件怎么用”这篇文章吧。先看看效果图:...
    99+
    2024-04-02
  • 微信小程序怎么自定义组件Component使用
    本篇内容介绍了“微信小程序怎么自定义组件Component使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1- 前言在本文中你将收获小程序...
    99+
    2023-07-05
  • 微信小程序自定义底部导航栏组件
    本文实例为大家分享了微信小程序底部导航栏组件的具体实现代码,供大家参考,具体内容如下 1、在自己项目的公共组件的文件价下新建tabbar.vue(定义的自定义导航栏组件) <...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作