小程序实现搜索功能续

简介: 小程序实现搜索功能续

我们上一篇利用自定义连接器实现了搜索功能,但测试发现使用数据列表无法做到数据更新。我们还是按照数据绑定的思路重新开发一下。

自定义连接器方法


module.exports = async function (params, context) {
  const db = context.database
  const _ = db.command
  let result = {data:[]}
  let total = 0
  if(params.keyword ==""){
     result =await context.database.collection('lcap-data-26caupXt1-product_vfxwrnn-preview').
  skip(params.pageSize*(params.pageNo-1)).limit(params.pageSize)
  .get();
  total = await context.database.collection('lcap-data-26caupXt1-product_vfxwrnn-preview').count();
  }else{
  result =await context.database.collection('lcap-data-26caupXt1-product_vfxwrnn-preview').
  skip(params.pageSize*(params.pageNo-1)).limit(params.pageSize)
  .where(_.or([
    {name:db.RegExp({
    regexp: params.keyword,
    options: 'i',
  })},
  {desc:db.RegExp({
    regexp: params.keyword,
    options: 'i'})}
  ]))
  .get();
  total = await context.database.collection('lcap-data-26caupXt1-product_vfxwrnn-preview').where(_.or([
    {name:db.RegExp({
    regexp: params.keyword,
    options: 'i',
  })},
  {desc:db.RegExp({
    regexp: params.keyword,
    options: 'i'})}
  ])).count();
  // 在这里返回这个方法的结果,需要与出参定义的结构映射
  }
  return {
    pageNo:params.pageNo,
    pageSize:params.pageSize,
    total:total.total,
    records: result.data
  };
};

变量定义


自定义连接器做好之后,在变量里需要定义三个变量,分别是pageNo、keyword和productList

组件搭建


变量定义好后,我们往页面中添加一个滚动容器

先往滚动容器里添加一个单行输入组件,修改字段标题为关键字

给单行输入组件设置行为,值改变时赋值给keyword变量

在单行输入组件下,我们增加个普通容器,里边放置一个文本组件

在普通容器上绑定循环展示,绑定我们的productList变量

文本组件的文本内容从循环变量里绑定

目前没有查询出数据来,是因为pageNo初始为0,我们修改一下,设定初始值为1

为了好看一点,我们给文本组件设置高度,并且设置一个边框

因为需要实现一下分页的效果,我们多录入一些数据,将每页显示的条数更改为5

实现分页


组件配置好之后,我们需要考虑如何实现分页的效果。首先是怎么触发分页,因为是在手机上浏览,我们一般是需要触底的时候实现分页的效果。因此需要在滚动容器上增加触底的事件,我们触底时先将pageNo+1

页码+1之后,我们就需要用新的页码再去调用自定义连接器,获取最新的数据

获取数据成功之后,我们再给列表数据productList重新赋值一下,将新获取到的数据追加进来就实现了分页的效果

{
    ...$page.dataset.state.productList,
    records:$page.dataset.state.prodcutList?.records?.concat(event.detail?.records)
}

测试时候发现触底没法触发事件,原来需要给滚动容器设置一个默认的高度才可以

设置高度后,如果往下拉,分页的数据会追加到原来的集合中

总结


如果使用数据列表容器,设置比较简单,无需编写过多的代码。但是如果使用自定义连接器就不太好使,就得我们自己使用滚动容器实现一下分页的效果,方法比较多,需要多多实践才可以。

相关文章
|
7月前
|
存储 搜索推荐 安全
Onlyfans如何使用搜索功能?Onlyfans如何搜索博主?如何在OnlyFans搜索HongkongDoll
本文是一份全面的指南,旨在帮助读者了解如何在OnlyFans平台上有效使用搜索功能,尤其是如何找到特定的博主,比如HongkongDoll。我们深入探讨了OnlyFans的搜索机制,包括其对用户隐私的重视以及因此带来的搜索限制。文章详细介绍了三种主要的搜索方法:使用OnlyFans的官方搜索服务、通过社交媒体链接进行跳转、以及利用第三方搜索引擎如OnlySearch。
|
6月前
|
算法
第4章 万能的搜索
第4章 万能的搜索
|
存储
【 uniapp - 黑马优购 | 搜索框 】如何实现自定义搜索组件、搜索建议、搜索历史
【 uniapp - 黑马优购 | 搜索框 】如何实现自定义搜索组件、搜索建议、搜索历史
611 0
|
小程序 JavaScript
小程序搜索弹出搜索内容功能(模糊查询)
小程序搜索弹出搜索内容功能(模糊查询)
81 0
|
存储 计算机视觉 容器
uniapp搜索功能
uniapp搜索功能
151 0
|
小程序 数据库
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
281 0
|
存储 并行计算 算法
秒懂算法 | 搜索基础
本篇介绍了BFS和DFS的概念、性质、模板代码。
169 0
秒懂算法 | 搜索基础
|
小程序
小程序实战之搜索框组件的封装与模糊搜索的实现
点击搜索框,跳转到搜索页,输入搜索词,可以获取到相关信息并渲染,从设计上来讲,整个需求需要拆分为两个核心步骤即搜索框组件封装与模糊搜索,下面将从这两部分来讲。
400 0
小程序实战之搜索框组件的封装与模糊搜索的实现
【Axure教程】通讯录搜索案例(字母定位+模糊搜索
【Axure教程】通讯录搜索案例(字母定位+模糊搜索
【Axure教程】通讯录搜索案例(字母定位+模糊搜索
下一篇
DataWorks