首页 > 其他分享 >picker组件增加搜索item条目的功能

picker组件增加搜索item条目的功能

时间:2023-10-07 16:47:30浏览次数:32  
标签:picker userName console log height item 组件 setData

picker组件顶部有搜索框,能搜索条目,如果条目很多的时候,上下翻很麻烦了,而且不容易找到,可以先全查,然后js搜索

wxml
<button bindtap="openFlag">可搜索选择框</button>
<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.userName}}</view>
        </picker-view-column>
      </picker-view>
    </view>
  </view>
</view>
wxss
/* pages/newstudents/newstudents.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;
}
js
const app = getApp();

Page({
  data: {
      //控制picker的显示与隐藏
  flag: false,
      // 用户输入的学校关键词
        // 滚动选择的学校
  setValues: [],
   teachers: [{userName:"张三"},{userName:"李四"},{userName:"刘三"},{userName:"王五"},{userName:"不配有名字的五"}],
   items:[],
  // 滚动选择的学校索引
  selectSchoolIndex:'',
  searchValue:'',

  },
  onl oad: function (options) {
  console.log('onLoad-----------------:') ;
  this.setData({
    // 用户赋值
    items:this.data.teachers
  })

  },

  searchSchool(e){
    // items
      console.log("搜索==========",e.detail)
      const backendData = this.data.teachers;
      console.log("数据====",backendData)
// 定义一个方法来执行模糊查询
function fuzzySearch(keyword) {
  // 使用 filter 方法筛选包含关键字的元素
  const result = backendData.filter(item => {
    // 检查 name 属性是否存在,并且是一个字符串
    if (item.userName && typeof item.userName === 'string') {
      // 将字符串都转为小写进行比较,实现不区分大小写的模糊查询
      return item.userName.toLowerCase().includes(keyword.toLowerCase());
    }
    return false;
  });

  return result;
}

      const searchResult = fuzzySearch(e.detail);
      console.log("搜索==后的结果==",searchResult)

      this.setData({
        // 用户赋值
        items:searchResult
      })
  },
  // 假设模糊查询的关键字为 keyword


  //用户滚动picker时,获取滚动选择的索引
  bindChange(e){
    this.setData({
      // 用户选择的学校索引
      selectSchoolIndex:e.detail.value[0]
    })
    console.log("-----------------------选择 :",e.detail.value[0])
  },

  //确定
  confirm(){
    console.log("-----------------------选择 确定 ")
    this.setData({   
      flag:true
    })
  },
//打开弹框
  openFlag(){
    console.log("打开弹框")
    this.setData({
      flag:false,
    })
  },
  //取消
  hiddeDatePicker(){
    console.log("取消")
    this.setData({  
      flag:true
    })
  },
 
 })

 

标签:picker,userName,console,log,height,item,组件,setData
From: https://www.cnblogs.com/xbinbin/p/17746641.html

相关文章

  • Prometheus组件介绍
    Prometheus由多个组件组成,最主要的三个组件Prometheusserver(采集存储)/Alertmanager(报警)/Grafana(展示)Prometheusserver: TSDBTSDB:需要后端存储TSDB(时序数据库)   时序数据库,这种数据库类型叫时序数据库,横轴数轴。   Prometheus采集的数据存储在TSDB时序数据库里......
  • 在非React组件的文件中使用Reudx 会造成的问题及解决方案
    Redux的使用场景函数式组件内(hooks调用redux)其他文件(无法使用hooks调用redux)这里函数式组件内使用Redux不再赘述,站内跳转,Reduxtoolkit使用一、非函数式组件的文件内使用reduxuseDispatch和useSelector这两个hooks只能在函数组件内使用,在非函数组件的文件(以下简称三方文......
  • uniapp 使用z-paging 分页组件 写在头部插槽内的单选按钮无法点击
    这个问题是因为组件层级太低<z-pagingref="paging"v-model="dataList"@query="queryList"auto-show-back-to-top:empty-view-z-index="9999"class="paging">      <viewslot="top">         <vie......
  • sessionStorage的setItem和getItem使用
    一、vue文件使用sessionStorage:(简单存值取值)1.存储数据:sessionStorage.setItem('取得k的名字','要存储的值')vuesessionStorage.setItem('loadClaim','this.node')2.获取数据:sessionStorage.getItem('取得k的名字')vuesessionStorage.getItem......
  • 界面组件DevExpress WinForms v23.1 - TreeList、UI模板全新升级
    DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!DevExpressWinForm 控件已正式发布v23.1版本,此版......
  • BootstrapBlazor组件库,Marquee文字滚动组件
    BootstrapBlazor组件库,Marquee文字滚动组件介绍本Blazor组件依赖于BootstrapBlazor组件库。使用该组件之前需要先安装BootstrapBlazor组件库。可以通过nuget命令行安装dotnetaddpackageBootstrapBlazor--version7.x或者双击项目名称直接添加ItemGroup<ItemGroup>......
  • 安卓开发组件开发示例
    系统原生下拉刷新<androidx.swiperefreshlayout.widget.SwipeRefreshLayoutandroid:id="@+id/swipe_refresh_layout"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:android="http://sc......
  • Spring-Boot 整合 J2EE Web组件
    一,整合Servlet1,通过注解扫描完成Servlet组件的注册1.1编写servlet/***SpringBoot整合Servlet方式一**<servlet>*<servlet-name>FirstServlet</servlet-name>*<servlet-class>com.bjsxt.servlet.FirstServlet</servlet-class>*</servlet>**<servlet-......
  • 深入了解iPhone 15 Pro内部结构和技术组件338500537、TPS6565780、338500843、SN300
    TechInsights团队正在拆解iPhone15Pro,以揭示其中的创新,包括使用台积电3nm工艺的全新A17芯片,提供了深入了解iPhone15Pro内部结构和技术组件。NXPNFC控制器安全元件SN300:(SN300VUK)Apple/Cirrus逻辑音频放大器338500537TiAMOLED显示器电源TPS6565780KIOXIA256GBNAND闪存App......
  • Minecraft个人服务器搭建自己的皮肤站并实现外置登录更换自定义皮肤组件
    Minecraft个人服务器搭建自己的皮肤站并实现外置登录更换自定义皮肤组件大家好,我是艾西有不少小伙伴非常喜欢我的世界Minecraft游戏,今天小编跟大家分享下Minecraft个人服务器怎么设置皮肤站。Minecraft皮肤站是什么?其实官网就有皮肤站,在正版用户选择正版的登录后,MC客户端就会到官方......