vantUI用popup和picker和field做关键词搜索功能

6 篇文章 0 订阅

 <van-field class="mainFileCss" v-model="currentflowmeterLocation" left-icon="search" @click="openPicker" center label="位号"
          placeholder="请输入位号">
          <template slot="button"></template>
        </van-field>


        <van-popup v-model="showPicker" class="pickerCss" position="bottom">
          <!-- v-model.trim 对关键字进行去空处理 @input 输入框自身属性,对输入的值进行实时检测 -->
          <van-field clickable v-model.trim="keyCurrentflowmeterLocation" left-icon="search" placeholder="搜索位号" @input="search"></van-field>

          <van-picker show-toolbar :columns="filterdepartments" @confirm="onConfirmss" @cancel="showPicker=false">
          </van-picker>

        </van-popup>
  //控制打开弹幕状态  
  private showPicker: boolean = false

  //打开后输入的关键词用于匹配
  private keyCurrentflowmeterLocation: string = ''
  
  //picker的显示的数据,通过tabledata和上面的关键字过滤出来的东西
  private filterdepartments: any[] = []

//打开
  private openPicker() {
    this.showPicker = true
    this.filterdepartments = []
    this.keyCurrentflowmeterLocation = ''
    this.search()
  }

  //搜索  根据关键字搞一次搜索
  private search() {
    this.filterdepartments = []
    let res = this.tableData.filter((params) => {
      return params.flowmeterLocation.includes(this.keyCurrentflowmeterLocation)
    })
    console.log('搜索res', res)
    res.forEach((item) => {
      this.filterdepartments.push(item.flowmeterLocation)
    })
    console.log('搜索', this.filterdepartments)
  }

//点击确定后的操作
  private onConfirmss(value) {
    this.currentflowmeterLocation = value
    this.onInputBlur()
    this.showPicker = false
  }

可以使用Vant Weapp中的Picker组件和Popup组件进行组合,实现类似于选择器的效果。具体步骤如下: 1. 在需要触发选择器的元素上绑定一个点击事件,在事件处理函数中调用Popup组件的打开方法。 2. 在Popup组件中放置一个Picker组件,并设置Picker组件的数据、事件处理函数等属性。 3. 当Picker组件中的值发生变化时,通过事件处理函数将选中的值传递给父组件,并在父组件中更新需要显示的内容。 下面是一个示例代码: ```html <!-- 在需要触发选择器的元素上绑定点击事件 --> <view bindtap="showPopup">选择</view> <!-- 弹出框 --> <van-popup show="{{showPopup}}" bind:close="onClose"> <van-picker value="{{value}}" range="{{range}}" bind:change="onChange" /> </van-popup> ``` ```javascript Page({ data: { showPopup: false, value: '', range: ['选项1', '选项2', '选项3'] }, // 点击触发选择器弹出框 showPopup() { this.setData({ showPopup: true }); }, // 关闭弹出框 onClose() { this.setData({ showPopup: false }); }, // 选择器数值变化时的回调函数 onChange(event) { const { value } = event.detail; this.setData({ value, // 根据选中的值更新需要显示的内容 selectedOption: this.data.range[value] }); } }); ``` 以上代码中,当用户点击“选择”按钮时,会触发showPopup方法,将showPopup变量设置为true,从而弹出Popup组件。在Popup组件中,放置了一个Picker组件,用于选择需要的值。当用户选择完毕后,会触发Picker组件的change事件,将选中的值传递给父组件,并更新需要显示的内容。最后,在Popup组件的close事件中,将showPopup变量设置为false,关闭弹出框。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值