首先创建组件及两个跳转页面,第一个是搜索框所在的页面(首页),第二个是搜索详细页
搜索框的本质是:搜索框不是input,而是navigate,跳转到专门的搜索页,搜索结果会呈现在这一页
先创建三个文件
在 selectPage.wxml 文件里引入搜索框组件
引入组件之前记得在 selectPage.json 文件中配置 组件
{"usingComponents": {"search": "../../components/select"}
}
<!-- 父组件向子组件传递参数,使用属性的形式,子组件通过 properties进行参数接收 -->
<search urlPath="{{urlPath}}" url="../selectResult/selectResult"></search>
最后在 JS 文件中 设置url路径,因为我们的目的是制作组件,所以参数这块都由父组件传递过去
到这里,selectPage 的任务基本完成了
Page({data: {urlPath: "../selectResult/selectResult"},onLoad: function (options) {}
})
搜索组件的基本 结构层 写一下
<view class="search_wrap"><navigator url="{{urlPath}}">搜索</navigator>
</view>
css样式也随便改一改,自己看的舒服就行,这里用的是less语言
/* components/select.wxss */
.search_wrap {width: 100%;height: 80rpx;background-color: #eb4450;display: flex;justify-content: center;align-items: center;navigator {text-align: center;padding: 10rpx;width: 90%;background-color: #fff;color: #6b6b6b;border-radius: 20rpx;}
}
JS文件中接收一下来自父元素传递过来的URL路径参数
// components/select.js
Component({properties: {urlPath: {type: String}},data: {},methods: {}
})
结构层
<view class="search_row"><input value="{{inputValue}}" bindinput="handleInput" class="inp" placeholder="请输入"></input><button class="btn" bind:tap="handleCanle">取消</button>
</view>
<view class="search_content"><view class="search_item" wx:for="{{searchResult}}">{{item.goods_name}}</view>
</view>
表示层
page {background-color: #ebebeb;padding: 20rpx;
}.search_row {height: 60rpx;display: flex;.inp {background-color: #fff;height: 100%;padding-left: 20rpx;flex: 4;border-radius: 5rpx;}.btn {width: 110rpx;height: 100%;font-size: 26rpx;font-weight: normal;padding: 0;margin: 0 0 0 10rpx;display: flex;justify-content: center;align-items: center;}
}.search_content {margin-top: 30rpx;.search_item {overflow: hidden;white-space: nowrap;text-overflow: ellipsis;background-color: #fff;border-bottom: 1px solid #7e7e7e;height: 60rpx;padding: 10rpx;font-size: 26rpx;}
}
行为层
// pages/selectResult/selectResult.js
Page({data: {// 定义搜索结果变量,初始化为空数组searchResult: [],// 定义inputValue,输入框的input值,初始化为空inputValue: ""},handleInput: function (e) {// 获取输入框的值const { value } = e.detail// 合法性验证,去除前后空格,防止打很多空格也会发送请求// 去除空格后的值是合法值了,再取反,为不合法值,不合法搜索结果清空if (!value.trim()) {this.setData({searchResult: [],})// 值不合法,直接return掉,不用执行下面的了return;}/*** 防抖动功能* 1 如果第一次输入的值合法,会执行this.TimeId这个定时器,然后一秒钟之后发送请求* 2 如果在这1秒钟的延迟内,用户重新做了输入,重新触发handleInput方法时,会执行clearTimeout* 将上一个定时器请求杀掉,然后再执行新的定时器函数,直到用户1庙后都没有新的输入后,才会发送请求*/clearTimeout(this.TimeId)this.TimeId = setTimeout(() => {this.qSearch(value)}, 1000)},// qSearch 发送请求函数(参数为输入框中的值)qSearch: function (query) {// 定义一个加载中的提示wx.showLoading({title: '加载中...',})// 发送请求wx.request,微信封装好的ajax请求// 参数有两个需要传递的// url,接口地址// data,搜索的关键词,这边接口会自动处理并返回带有关键词的内容,// 不是因为wx.request又会发送ajax,还会给你自动筛选wx.request({url: 'https://api-hmugo-web.itheima.net/api/public/v1/goods/qsearch',data: { query },// 请求成功时调用success: (result) => {// 将获取的值,赋值给定义的searchResult,WXML文件获取渲染this.setData({searchResult: result.data.message})// 成功获取数据后,把加载中的提示关掉wx.hideLoading({complete: (res) => { },})}});},// 取消按钮函数handleCanle: function () {this.setData({searchResult: [],inputValue: ""})}
})
gitee代码地址:https://gitee.com/chenminghuisir/wechat-applet-component.git
代码保存在仓库,WXDoubleScroller文件里
代做工资流水公司佛山制作工资流水账单揭阳银行流水账多少钱南京自存银行流水代办西宁办理房贷银行流水宜昌银行流水账查询济宁工资银行流水费用江门银行对公流水哈尔滨工资代付流水代做厦门打入职流水台州企业对公流水多少钱湘潭查离职证明上饶做对公银行流水重庆房贷流水开具贵阳消费贷流水样本保定企业贷流水曲靖企业银行流水代做孝感购房银行流水模板宁德办银行流水修改邢台个人流水打印上海薪资流水曲靖流水威海贷款工资流水 制作邯郸银行流水单代开成都查询对公流水深圳代开背调工资流水湘潭个人银行流水查询南京查公司流水德阳办贷款银行流水黄冈对公账户流水办理肇庆制作工资银行流水香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤