【鸿蒙 HarmonyOS 4.0】解决:搜索无效问题

一、背景

页面包含搜索框和列表,列表默认展示所有数据并具有分页功能。然而,在输入关键字到搜索框时,列表未正确展示搜索结果。

二、功能实现

2.1、原代码及实现效果

import ChargeType from '../../viewModel/ChargeType'
import ChargeModel from '../../model/ChargeModel'

@Component
export default struct ChargeList {
  @State charges:ChargeType[] = []
  @Link stationId:number
  isLoading: boolean = false
  isMore: boolean = true
  controller: SearchController = new SearchController()
  showPanel:()=>void

  aboutToAppear(){
    //加载充电站数据
    this.chargeInfo('')
  }

  build() {
    Column({space:10}){
      //搜索
      Column({space:15}){
        Text('充电')
          .fontColor(Color.White)
          .fontSize(20)
          .margin({top:30})
        Search({placeholder:'请输入搜索内容',controller: this.controller})
          .placeholderColor(Color.Gray)
          .backgroundColor('#F5F5F5')
          .textFont({size:18})
          .onChange((value: string) => {
            console.log('搜索的值',value)
            this.chargeInfo(value)
          })
      }
      .width('100%')
      .height('20%')
      .padding({left:20,right:20})
      .backgroundColor($r('app.color.charge_header'))
      //列表
      List({space:10}){
        ForEach(this.charges,(item:ChargeType) => {
          ListItem(){
            this.chargeItem(item)
          }
          .onClick(() =>{
            console.log('弹出充电桩数据')
          })
        })
      }
      .width('95%')
      .layoutWeight(1)
      .onReachEnd(() => {
        if(!this.isLoading && this.isMore){
          this.isLoading = true
          // 翻页
          ChargeModel.pageNo++
          this.chargeInfo('')
        }
      })
    }
    .width('100%')
  }
  //item项
  @Builder chargeItem(item:ChargeType){
    Column({space:12}){
      Text(item.name).fontWeight(FontWeight.Bold)
      Row({space:8}){
        Text(`¥ ${item.pricePerHour}`).fontColor($r('app.color.pile_tanan'))
        Text('/度').fontColor($r('app.color.limit'))
        Blank()
        Text(item.tenantName).fontSize(18).fontColor($r('app.color.pile_tanan'))
        Blank()
        Image($r('app.media.fast')).width(20)
        Text(`闲${item.freePileTotal}`).fontWeight(FontWeight.Bold)
        Text(`/${item.pileTotal}`)
      }
      .width('100%')
      Row({space:8}){
        Text(`${item.distance.toFixed(2)}km`)
        Image($r('app.media.location')).width(20)
        Image($r('app.media.imgUrl')).width(20)
      }

    }
    .height('100%')
    .backgroundColor('#FFF')
    .height(120)
    .padding(10)
    .borderRadius(20)
    .alignItems(HorizontalAlign.Start)
  }

  //调取接口,获取充电站数据
  async chargeInfo(name){
    let res:any = await ChargeModel.getStations(name)
    if(res.responseCode === 200){
      let chargeRes = JSON.parse(res.result.toString())
      if(chargeRes.code == 0){
        this.charges = this.charges.concat(chargeRes.data.List)
        console.log('列表数据charges',this.charges.length,this.charges)
        this.isLoading = false
        if(!chargeRes.data.List || chargeRes.data.List.length === 0){
          this.isMore = false
        }
      }
    }
  }
}

说明:

①页面初次加载是当前页5条数据, 翻页后加载了所有数据7条

②搜索框输入关键字:x,列表仍然展示的所有数据7条,未展示搜索后的数据

2.2、改造原代码,解决搜索失效问题

分析问题:

这个问题可能出在搜索时未能正确重置 页码值pageNo 和清空原有数据,导致搜索结果未能正确展示在列表中。 

具体操作:

①在 chargeInfo() 方法中增加一个参数来标识是否需要重置 页码值pageNo 和清空原有数据

②在搜索时调用 chargeInfo() 方法时,传入 true 来重置 页码值pageNo 和清空数据

 

2.3、最终效果

说明:

左图为默认状态,右图为搜索结果

①搜索框输入关键字后,列表展示搜索后数据

②未搜索情况下展示默认当前页数据 

为什么名字后面加英文,搜索时也是输入的英文???

因为我使用的电脑模拟器查看的,不能切换中文,只能输入英文,在官网搜索后得到的结果是真机调试可以输入中文,真机我还未做测试😂😂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/438053.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

devc++8x8取模软件

这几天在搞arduino nano和单个max7219模块,涉及到16进制的取模,在网上转了一圈,没找到合适的取模软件,于是自己做了一个,试过,可以用,按esc退出并生成16进制的取模结果 源代码: #i…

liunx操作系统 环境变量

环境变量 main函数参数 命令行参数环境变量 环境变量的查看环境变量的获取 main函数参数 命令行参数 main函数是有参数的,只是我们一般不适用 这是main函数从bash中读取进程数据使用的一个基本入口。 下面进行简单演示。 o 好oo都是我们输入的命令行参数。其实&a…

20240304-使用VS2022编译blender3.6.2源代码

20240304-使用VS2022编译blender3.6.2源代码 一、软件环境 Win10 x64 22h2 JuneVS2022 v17.9.0CMake v3.24.4SVN v1.14.3GIT v2.29.2标签:win10 22h2 vs2022 blender 63335分栏:C 二、硬件环境 Win10 x64的PC台式机 三、获取源码 方法一 网盘下载…

安装sqlserver2022最新版只能使用.\SQLEXPRESS登录数据库怎么修改成.

.\SQLEXPRESS “服务器名称 localhost\SQLEXPRESS”中的 “SQLEXPRESS”就是数据库的实例名称/数据库名/服务器名, “localhost”即登录本计算机安装的数据库 安装sqlserver2022最新版只能使用.\SQLEXPRESS登录数据库怎么修改成. 2、查看SQL Server数据库的实例名…

Redis实战—验证码登录功能实现

本博客为个人学习笔记,学习网站:黑马程序员Redis入门到实战 实战篇之验证码登录 目录 基于Session实现登录流程 发送短信验证码 短信验证码登录、注册 校验登录状态 session共享问题 Redis代替session的业务流程 设计Key的结构 设置Key的细节 整…

FreeRTOS操作系统学习——任务管理

任务概念 在FreeRTOS中,一个任务相当于一个线程,可以有很多的任务,每个人任务可以设置不同的优先级。相同优先级的任务轮流使用CPU,高优先级的任务可以一直使用CPU,直到主动放弃,低级的任务才有被执行的机…

Stable Diffusion 模型分享:DucHaiten-AIart-SDXL(动漫、3D、逼真)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 这是一个丰富多彩的 SDXL 模型,可以绘制动漫、3D、科幻、真实等类型的图片。 …

响应式编程五股票订阅系统实现

响应式编程五 使用StepVerifier测试响应式流StepVerifier要点 使用StepVerifier进行高级测试股票订阅系统数据库表 使用StepVerifier测试响应式流 出于测试目的,Reactor 提供了额外的 reactor-test 模块,该模块提供了 StepVerifier。StepVerifier 提供了…

Go的安装

一. 下载地址 Go官方下载地址:https://golang.org/dl/ Go中文网:https://go.p2hp.com/go.dev/dl/ 根据不同系统下载不同的包。 二. 配置GOPATH GOPATH是一个环境变量,用来表明你写的go项目的存放路径。 GOPATH路径最好只设置一个&#xff0…

【JavaEE初阶】 JVM 运行时数据区简介

文章目录 🍃前言🌲堆(线程共享)🎄Java虚拟机栈(线程私有)🎋本地方法栈(线程私有)🌳程序计数器(线程私有)🌴方法…

CentOS上安装MySQL 5.7和MySQL 8.0教程

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

Hive的性能优化

1.调优概述 Hive 作为大数据领域常用的数据仓库组件,在设计和查询时要特别注意效率。影响 Hive 效率的几乎从不是数据量过大,而是数据倾斜、数据冗余、Job或I/O过多、MapReduce分配不合理等等。对 Hive 的调优既包含 Hive 的建表设计方面,对H…

如何学习I2C协议

文章目录 学习I2C协议0 懒人直达1 了解协议开发者2 从恩智浦半导体公司下载官方技术文档3 翻译成中文4 资源下载 学习I2C协议 0 懒人直达 点击直达 1 了解协议开发者 I2C(Inter-Integrated Circuit)协议是由荷兰皇家飞利浦电子公司(现恩智…

python 基础知识点(蓝桥杯python科目个人复习计划59)

今日复习内容:做题 例题1:建造房屋 问题描述: 小蓝和小桥是两位年轻的建筑师,他们正在设计一座新的城市。 在这个城市中,有N条街道,每条街道上有M个位置可以建造房屋(一个位置只能建造一个房…

#14vue3生成表单并跳转到外部地址的方式

1、背景 后端返回的json数据中包含一个json数组,此数组中是目标跳转地址所需要的form表单的数据。 2、跳转前的页面 const goto () > {finish.value true;request.post(/xxx/yyy,{zzz: zzz.value}).then(res > {const url res.data.submitUrlconst params…

洞察未来5-10年数字化转型的革命性趋势

“十四五”规划和2035年远景目标纲要提出了加快数字化发展,建设数字中国的目标, 这意味着数字化转型将成为推动生产方式、生活方式和治理方式变革的关键力量。 加快数字化发展 建设数字中国 ⭐ 打造数字经济新优势 ⭐ 加快数字社会建设步伐 ⭐ 提高数字…

【力扣白嫖日记】1070.产品销售分析III

前言 练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。 今日题目: 1070.产品销售分析III 表:Sales 列名类型sale_idintproduct_idintyearintquantityintpriceint …

Selenium自动化测试-3.元素定位(1)

这次我们要分享的是对元素的定位,在一个页面中有很多不同的策略来定位一个元素,我们选择最合适的方法即可。 一个页面最基本组成单元是元素,想要定位一个元素,我们需要特定的信息来说明这个元素的唯一特征。 selenium 主要提供了…

Javaweb之Web后端开发总结的详细解析

4. Web后端开发总结 到此基于SpringBoot进行web后端开发的相关知识我们已经学习完毕了。下面我们一起针对这段web课程做一个总结。 我们来回顾一下关于web后端开发,我们都学习了哪些内容,以及每一块知识,具体是属于哪个框架的。 web后端开…

BUUCTF-Misc2

wireshark1 1.打开附件 发现是流量包,放到Wireshark中分析 2.过滤 根据题目的提示寻找管理员登录的网站,从中获取密码 用http.request.methodPOST,过滤当前的 HTTP 请求为 POST 方法 3.查找 双击过滤后的流量包,查找管理员密码…