文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

美食菜谱类微信小程序的搜索组件怎么实现

2023-06-26 09:02

关注

这篇文章主要介绍了美食菜谱类微信小程序的搜索组件怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇美食菜谱类微信小程序的搜索组件怎么实现文章都会有所收获,下面我们一起来看看吧。

1组件结构

为组件设置一个容器,在容器中放置搜索图标、输入框、清除文字按钮和搜索按钮。

<view class='container'><view class='input-wrapper'><image class='search-icon' src='/img/search.png'></image><input         placeholder='{{placeholder}}'         value='{{inputValue}}'         bindinput='handleInput'         bindconfirm='handleSearch'        bindfocus='inputFocused'></input><view class='close-icon-wrapper' wx:if="{{showCloseIcon}}" bindtap='clearValue'><image class='close-icon' src='/img/close.png' ></image></view><text bindtap='onTap'>搜索</text></view></view>

2组件样式

container:高度 100 rpx,背景色 #eee,flex 布局。

input-wrapper:高度 80 rpx,背景色 #fff,flex 布局,border-radius: 20rpx。

search-icon:宽高 32 rpx。

input:字体和光标颜色 #000,字体大小 32 rpx。

close-icon-wrapper:宽高 80 rpx,绝对定位。

text:搜索按钮宽 110 rpx,高 65 rpx,绝对定位,左边框 2rpx solid #eee。

.container {    background: #eee;    height: 100rpx;    width: 100%;    display: flex;    justify-content: center;    align-items: center;}.input-wrapper {    display: flex;    align-items: center;    height: 80rpx;    width: 80%;    background: #fff;    border-radius: 20rpx;}.input-wrapper .search-icon {    margin-left: 20rpx;    width: 32rpx;    height: 32rpx;}.input-wrapper input {    margin-left: 10rpx;    color: #000;    font-size: 32rpx;    caret-color: #000;    width: 60%;}.input-wrapper .close-icon-wrapper{    position: absolute;    left: 480rpx;    width: 80rpx;    height: 80rpx;    background:#fff;    display: flex;    justify-content: center;    align-items: center;}.input-wrapper .close-icon {    width: 42rpx;    height: 42rpx;}.input-wrapper text {    position: absolute;    right: 80rpx;    width: 110rpx;    height: 65rpx;    padding: 0;    background: #fff;    display: flex;    justify-content: center;    align-items: center;    font-size: 32rpx;    border-left: 2rpx solid #eee;}

3组件功能

1. 属性区分

组件的构造器中要注意区分 properties 和 data,properties 中写组件的对外属性,data 写组件的对内属性。在本搜索组件中 placeholder 和 value 从页面传来,所以它们写在 properties 中,控制清除按钮是否出现的 showCloseIcon 要写在 data 中。

properties: {    placeholder: {        type: String,        value: '搜索' // 如果页面不传placeholder,显示“搜索”    },    inputValue: {        type: String    }},data: {    showCloseIcon: false,},

2.方法设置

事件流程

(1)光标不聚焦,没有任何输入&mdash;&mdash;显示搜索图标、placeholder和搜索按钮。

(2)光标聚焦,没有任何输入&mdash;&mdash;光标闪烁,显示搜索图标、placeholder和搜索按钮。

(3)光标聚焦,有输入&mdash;&mdash;光标闪烁,显示搜索图标、输入文字、清除按钮和搜索按钮。

(4)光标不聚焦,有输入&mdash;&mdash;显示搜索图标、输入文字、清除按钮和搜索按钮。

(5)按回车搜索&mdash;&mdash;清除按钮隐藏。

(6)点击搜索按钮&mdash;&mdash;清除按钮隐藏。

由此可见,需要 input 组件的聚焦和键盘输入事件。

<input     placeholder='{{placeholder}}'     value='{{inputValue}}'     bindinput='handleInput'     bindconfirm='handleSearch'    bindfocus='inputFocused'></input>

inputFocused:如果聚焦时,输入框中有内容,显示 closeIcon;

handleInput:如果输入时没有内容,不显示 closeIcon,有内容,显示 closeIcon 并把值存入 value。

handleSearch:点击回车后,不显示 closeIcon。

triggerEvent:自定义组件触发事件时,需要使用 triggerEvent 方法,指定事件名、detail对象和事件选项。 

inputFocused(e) {            if (e.detail.value !== '') {                this.setData({                    showCloseIcon: true,                });            }        },        handleInput(e) {            if (e.detail.value == '') {                this.setData({                    showCloseIcon: false,                });            } else {                this.setData({                    showCloseIcon: true,                });                this.triggerEvent('handleInput', {                    value: e.detail.value                });            }        },        handleSearch() { // 点击键盘上的回车,调用此方法            this.setData({                showCloseIcon: false,            });            console.log('handleSearch', this.data.inputValue);        },
<view class='close-icon-wrapper' wx:if="{{showCloseIcon}}" bindtap='clearValue'><image class='close-icon' src='/img/close.png' ></image></view><text bindtap='onTap'>搜索</text>

分别为 closeIcon 和 搜索按钮添加点击事件。

clearValue() {            this.triggerEvent('handleInput', {                value: ''            });            this.setData({                showCloseIcon: false,            });        },        onTap() {            this.setData({                showCloseIcon: false,            });            console.log('onTap', this.data.inputValue);        },

组件 json

{  "component":true}

页面 json

工程的名字是 cookbook,这里组件前缀统一为 ck。

{    "usingComponents":{        "ck-input":"/components/search/index"    }}

页面 wxml

<view class='container'><ck-input    placeholder='搜你想吃的'    inputValue="{{inputValue}}"    bind:handleInput="handleInput"></ck-input></view>

页面 js

handleInput(e) {        this.setData({            inputValue: e.detail.value,        });    },

关于“美食菜谱类微信小程序的搜索组件怎么实现”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“美食菜谱类微信小程序的搜索组件怎么实现”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯