微信小程序(三十四)搜索框-带历史记录

注释很详细,直接上代码

新增内容:
1.搜索框基本模板
2.历史记录基本模板
3.细节处理

源码:

index.wxml

<!-- 
    1.点击搜索按钮
        a.非空判断
        b.历史记录(去重)
        c.清空搜索框
        d.去除前后多余空格
    2.删除搜索  
    3.无搜索记录不渲染搜索记录的标题
 -->

 <!-- 搜索历史 -->
<view class="history">
  <view class="search-bar">
    <!-- 使用简易的双向绑定 -->
    <input type="text"  model:value="{{keyword}}" />
    <text class="label" bind:tap="onSearch">搜索</text>
  </view>
  <view class="title" wx:if="{{keywords.length!==0}}"> 
    历史搜索 
    <text class="icon-delete" bind:tap="onClear">x</text>
  </view>
  <view class="keywords">
    <navigator url="/pages/logs/logs" wx:for="{{keywords}}" wx:key="*this" >
        {{item}}
    </navigator>
  </view>
</view>

index.wxss

input {
    padding: 14rpx 20rpx 10rpx;
    border: 2rpx solid #ddd;
    border-radius: 10rpx;
  }

  .history {
    margin-top: 20rpx;
    padding: 30rpx 20rpx;
    border-radius: 10rpx;
    background-color: #fff;
  }
  
  .history .search-bar {
    display: flex;
  }
  
  .history .search-bar .label {
    width: 90rpx;
    margin-right: 10rpx;
    text-align: right;
    line-height: 70rpx;
  }
  
  .history .search-bar input {
    flex: 1;
    padding-left: 40rpx;
    border-radius: 60rpx;
  }
  
  .history .title {
    display: flex;
    justify-content: space-between;
    margin-top: 30rpx;
    padding-left: 20rpx;
    font-size: 30rpx;
  }
  
  .history .title .icon-delete {
    width: 36rpx;
    height: 36rpx;
    text-align: center;
    line-height: 32rpx;
    border-radius: 50%;
    color: #fff;
    transform: scale(0.9);
    background-color: #ccc;
  }
  
  .history .keywords {
    display: flex;
    flex-wrap: wrap;
    margin-top: 10rpx;
    border-radius: 10rpx;
  }
  
  .history .keywords navigator {
    margin-right: 20rpx;
    margin-top: 20rpx;
    padding: 8rpx 28rpx;
    border-radius: 50rpx;
    background-color: #f7f6f7;
    font-size: 28rpx;
  }

index.js


Page({
    //数据
    data:{
        // 搜索框内容,使用的是简易的双向绑定
        //温习一下:第一层才能进行双向绑定
        keyword:'',

        //历史搜索的数组
        keywords:[]
    },
    //点击搜索按钮
    onSearch(){
        // this.data.keyword获取数据,
        //trim去除字符串前后多余空格
        const keyword=this.data.keyword.trim()
        //console.log(keyword)

        //非空判断
        if(keyword==='')
        {
            return wx.showToast({
              icon:'none',
              title: '请输入搜索内容',
            })
        }

       

        //在数组增加内容
        //push是增加在后面,unshift是在前面,历史记录当然是新的在前面
        //这个不会自动更新视图而微信小程序没用提供手动更新视图的api所以不用这个方法
        /* 
        this.data.keywords.unshift(keyword)
        */
       
       //增加数组长度的步骤也可以使用展开运算符
       const arr=[keyword,...this.data.keywords]

        this.setData({
            //先转化为set去重
            //然后重新转化为数组
            keywords:Array.from(new Set(arr)),

            //搜索完成清空搜索框
            keyword:''
        })

        console.log(this.data.keywords)
    },
    //清空历史记录
    onClear(){
        //清空历史记录数组
        this.setData({
            keywords:[]
        })
    }
})

效果演示:(历史记录第一个框也是有颜色的,可能是截图软件帧率 的问题)

在这里插入图片描述

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

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

相关文章

springboot158基于springboot的医院资源管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

HTTP相关问题

目录 1.从输入URL到页面展示到底发生了什么&#xff1f; 2.HTTP状态码有哪些&#xff1f; 2.1 2XX(成功状态码) 2.2 3XX(重定向状态码) 2.3 4XX(客户端错误状态码) 2.4 5XX(服务端错误状态码) 3.HTTP 请求头中常见的字段有哪些&#xff1f; 4.HTTP和HTTPS有什么区别&…

[C++] 如何使用Visual Studio 2022 + QT6创建桌面应用

安装Visual Studio 2022和C环境 [Visual Studio] 基础教程 - Window10下如何安装VS 2022社区版_visual studio 2022 社区版-CSDN博客 安装QT6开源版 下载开源版本QT Try Qt | 开发应用程序和嵌入式系统 | Qt Open Source Development | Open Source License | Qt 下载完成&…

AI人工智能怎么自动抠图去除背景

抠图在许多场合中都发挥着重要的作用&#xff0c;它可以帮助我们去除图片的背景&#xff0c;从而将图片转换成透明底色&#xff0c;方便我们为图片更换其他的背景。为了实现照片去除背景只提取人物&#xff0c;我们需要使用专业的图片处理工具&#xff0c;并进行一系列的操作。…

算法效率的度量-时间空间复杂度

常对幂指阶 1.时间复杂度 事前预估 算法 时间开销 T(n) 与 问题规模 n 的关系&#xff08; T 表示 “ time ”&#xff09; 一般默认问题规模为n。 1.单循环 2.嵌套两层循环都为n 3.单层循环指数递增型 4.搜索型 链接 &#xff1a;第七章查找算法&#xff01;&#xff01…

elementUI 表格中如何合并动态数据的单元格

elementUI 表格中如何合并动态数据的单元格 ui中提供的案例是固定写法无法满足 实际开发需求 下面进行改造如下 准备数据如下 //在表格中 设置单元格的方法 :span-method"spanMethodFun" <el-table :data"tableData" border :span-method"spa…

2024第八届生物饲料高质量发展论坛会议通知

饲料工业发展空间大&#xff0c;产量持续增长&#xff0c;品质与质量也在不断提高&#xff0c;饲料工业是支撑现代畜牧水产养殖业发展的基础产业&#xff0c;是关系到城乡居民动物性食品供应的民生产业。“十四五”时期是我国由全面建设小康社会向基本实现社会主义现代化迈进的…

LeetCode、790. 多米诺和托米诺平铺【中等,二维DP,可转一维】

文章目录 前言LeetCode、790. 多米诺和托米诺平铺【中等&#xff0c;二维DP&#xff0c;可转一维】题目与分类思路二维解法二维转一维 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质…

性能测试工具LoadRunner与登录性能测试分析

1. LoadRunner与Jmeter Jmeter是开源免费的&#xff0c;LoadRunner是商业收费的。 但是LoadRunner具有非常强大的录制功能&#xff0c;具有丰富且灵活的场景&#xff0c;具备丰富的报告性能。 1&#xff09;Jmeter没有录制功能 2&#xff09;LoadRunner可以设计非常丰富的测试…

构造回文数组

目录 原题描述&#xff1a; 题目描述 时间&#xff1a;1s 空间&#xff1a;256M 题目描述&#xff1a; 输入格式&#xff1a; 输出格式&#xff1a; 样例1输入&#xff1a; 样例1输出&#xff1a; 样例2输入&#xff1a; 样例2输出&#xff1a; 约定&#xff1a; 作…

JVM 性能调优 - JVM 参数基础(2)

查看 JDK 版本 $ java -version java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode) 查看 Java 帮助文档 $ java -help 用法: java [-options] class [args...] …

CSS:三列布局

三列布局是指左右两列定宽&#xff0c;中间自适应。最终效果如下&#xff1a; HTML&#xff1a; <div class"container"><div class"left"></div><div class"center"></div><div class"right">…

javaEE - 23( 21000 字 Servlet 入门 -1 )

一&#xff1a;Servlet 1.1 Servlet 是什么 Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app. 构建动态页面的技术有很多, 每种语言都有一些相关的库/框架来做这件事&#xff0c;Servlet 就是 Tomcat 这个 HTTP…

404. Sum of Left Leaves(左叶子之和)

问题描述 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 问题分析 我们可以查看如果一个叶子是左叶子就加上其值然后返回&#xff0c;如果是右叶子则不用关。 代码 int sumOfLeftLeaves(struct TreeNode* root) {int sum 0;if(root!NULL){if(root->left!…

板块零 IDEA编译器基础:第二节 创建JAVA WEB项目与IDEA基本设置 来自【汤米尼克的JAVAEE全套教程专栏】

板块零 IDEA编译器基础&#xff1a;第二节 创建JAVA WEB项目与IDEA基本设置 一、创建JAVA WEB项目&#xff08;1&#xff09;普通项目升级成WEB项目&#xff08;2&#xff09;创建JAVA包 二、IDEA 开荒基本设置&#xff08;1&#xff09;设置字体字号自动缩放 &#xff08;2&am…

安全SCDN有什么作用

当前网络安全形势日益严峻&#xff0c;网络攻击事件频发&#xff0c;攻击手段不断升级&#xff0c;给企业和个人带来了严重的安全威胁。在这种背景下&#xff0c;安全SCDN作为一种网络安全解决方案&#xff0c;受到了广泛的关注。那么&#xff0c;安全SCDN真的可以应对网络攻击…

为后端做准备

这里写目录标题 flask 文件上传与接收flask应答&#xff08;接收请求&#xff08;文件、数据&#xff09;flask请求&#xff08;上传文件&#xff09;传递参数和文件 argparse 不从命令行调用参数1、设置default值2、"从命令行传入的参数".split()3、[--input,内容] …

基于OpenCV灰度图像转GCode的斜向扫描实现

基于OpenCV灰度图像转GCode的斜向扫描实现基于OpenCV灰度图像转GCode的斜向扫描实现 引言激光雕刻简介OpenCV简介实现步骤 1.导入必要的库2. 读取灰度图像3. 图像预处理4. 生成GCode5. 保存生成的GCode6. 灰度图像斜向扫描代码示例 总结 系列文章 ⭐深入理解G0和G1指令&…

003集—三调数据库添加三大类字段——arcgis

在国土管理日常统计工作中经常需要用到三大类数据&#xff08;农用地、建设用地、未利用地&#xff09;&#xff0c;而三调数据库中无三大类字段&#xff0c;因此需要手工录入三大类字段&#xff0c;并根据二级地类代码录入相关三大类名称。本代码可一键录入海量三大类名称统计…

Springboot+vue的企业财务管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的企业财务管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的企业财务管理系统&#xff0c;采用M&#xff08;model&…