版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】微信小程序搜索分页功能怎么实现
这篇文章主要介绍微信小程序搜索分页功能怎么实现,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!这里以搜索歌曲为例:前端:<view
class="search">
<view
class="search-bar">
<view
class="search-wrap">
<icon
type="search"
size="16"
class="icon-search"
/>
<input
type="text"
placeholder="请输入搜索内容"
class="search-input"
name="searchKeyword"
bindinput="bindKeywordInput"
value="{{searchKeyword}}"
/>
</view>
<view
class="search-cancel"
bindtap="keywordSearch">搜索</view>
</view>
<view
class="search-result">
<scroll-view
scroll-y="true"
bindscrolltolower="searchScrollLower">
<view
class="result-item"
wx:for="{{searchSongList}}"
wx:key="unique"
data-data="{{item}}"
>
<view
class="icon{{item.isonly=='0'
?
'
nocopyright'
:
''}}"></view>
<text
class="title">{{item.SongName}}--{{item.SingerName}}</text>
<view
class="subtitle">
<text>{{item.SingerName}}</text>
</view>
</view>
<view
class="loading"
hidden="{{!searchLoading}}">正在载入更多...</view>
<view
class="loading
complete"
hidden="{{!searchLoadingComplete}}">已加载全部</view>
</scroll-view>
</view>
</view>样式:page{
display:
flex;
flex-direction:
column;
height:
100%;
}
/*搜索*/
.search{
flex:
auto;
display:
flex;
flex-direction:
column;
background:
#fff;
}
.search-bar{
flex:
none;
display:
flex;
align-items:
center;
justify-content:
space-between;
padding:
20rpx;
background:
#f4f4f4;
}
.search-wrap{
position:
relative;
flex:
auto;
display:
flex;
align-items:
center;
height:
80rpx;
padding:
0
20rpx;
background:
#fff;
border-radius:
6rpx;
}
.search-wrap
.icon-search{
margin-right:
10rpx;
}
.search-wrap
.search-input{
flex:
auto;
font-size:
28rpx;
}
.search-cancel{
padding:
0
20rpx;
font-size:
28rpx;
}
/*搜索结果*/
.search-result{
flex:
auto;
position:
relative;
}
.search-result
scroll-view{
position:
absolute;
bottom:
0;
left:
0;
right:
0;
top:
0;
}
.result-item{
position:
relative;
display:
flex;
flex-direction:
column;
padding:
20rpx
0
20rpx
110rpx;
overflow:
hidden;
border-bottom:
2rpx
solid
#e5e5e5;
}
.result-item
.media{
position:
absolute;
left:
16rpx;
top:
16rpx;
width:
80rpx;
height:
80rpx;
border-radius:
999rpx;
}
.result-item
.title,
.result-item
.subtitle{
overflow:
hidden;
text-overflow:
ellipsis;
white-space:
nowrap;
line-height:
36rpx;
}
.result-item
.title{
margin-bottom:
4rpx;
color:
#000;
}
.result-item
.subtitle{
color:
#808080;
font-size:
24rpx;
}
.result-item:first-child
.subtitle
text{
margin-right:
20rpx;
}
.result-item:not(:first-child)
.subtitle
text:not(:first-child):before{
content:
'/';
margin:
0
8rpx;
}
.loading{
padding:
10rpx;
text-align:
center;
}
.loading:before{
display:
inline-block;
margin-right:
5rpx;
vertical-align:
middle;
content:
'';
width:
40rpx;
height:
40rpx;
/*
background:
url(../../images/icon-loading.png)
no-repeat;
*/
background-size:
contain;
animation:
rotate
1s
linear
infinite;
}
.plete:before{
display:
none;
}js:var
util
=
require('../../utils/util.js')
Page({
data:
{
searchKeyword:
'',
//需要搜索的字符
searchSongList:
[],
//放置返回数据的数组
isFromSearch:
true,
//
用于判断searchSongList数组是不是空数组,默认true,空的数组
searchPageNum:
1,
//
设置加载的第几次,默认是第一次
callbackcount:
15,
//返回数据的个数
searchLoading:
false,
//"上拉加载"的变量,默认false,隐藏
searchLoadingComplete:
false
//“没有数据”的变量,默认false,隐藏
},
//输入框事件,每输入一个字符,就会触发一次
bindKeywordInput:
function
(e)
{
console.log("输入框事件")
this.setData({
searchKeyword:
e.detail.value
})
},
//搜索,访问网络
fetchSearchList:
function
()
{
let
that
=
this;
let
searchKeyword
=
that.data.searchKeyword,//输入框字符串作为参数
searchPageNum
=
that.data.searchPageNum,//把第几次加载次数作为参数
callbackcount
=
that.data.callbackcount;
//返回数据的个数
//访问网络
util.getSearchMusic(searchKeyword,
searchPageNum,
callbackcount,
function
(data)
{
console.log(data)
//判断是否有数据,有则取数据
if
(data.status
!=
0)
{
let
searchList
=
[];
//如果isFromSearch是true从data中取出数据,否则先从原来的数据继续添加
that.data.isFromSearch
?
searchList
=
data.data.lists
:
searchList
=
that.data.searchSongList.concat(data.data.lists)
that.setData({
searchSongList:
searchList,
//获取数据数组
//存放歌手属性的对象
//
searchLoading:
true
//把"上拉加载"的变量设为false,显示
});
//没有数据了,把“没有数据”显示,把“上拉加载”隐藏
}
else
{
that.setData({
searchLoadingComplete:
true,
//把“没有数据”设为true,显示
searchLoading:
false
//把"上拉加载"的变量设为false,隐藏
});
}
})
},
//点击搜索按钮,触发事件
keywordSearch:
function
(e)
{
this.setData({
searchPageNum:
1,
//第一次加载,设置1
searchSongList:
[],
//放置返回数据的数组,设为空
isFromSearch:
true,
//第一次加载,设置true
searchLoading:
true,
//把"上拉加载"的变量设为true,显示
searchLoadingComplete:
false
//把“没有数据”设为false,隐藏
})
this.fetchSearchList();
},
//滚动到底部触发事件
searchScrollLower:
function
()
{
let
that
=
this;
if
(that.data.searchLoading
&&
!that.data.searchLoadingComplete)
{
that.setDa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年AI智能营销技术合作合同样本
- 二零二五年度生态环保木工加工厂合作合同4篇
- 2025年医疗护士协议
- 2025年增资协议书面详细约定内容文本
- 2025年产品分销渠道协定书
- 2025年家装风水合同
- 2025年埋头竞业禁止合同
- 2025版智能家居灯具音响设备一体化采购合同4篇
- 2025年媒介环境分析协议
- 2025版学校食堂猪肉食品安全风险评估与监控合同2篇
- 口腔执业医师定期考核试题(资料)带答案
- 2024人教版高中英语语境记单词【语境记单词】新人教版 选择性必修第2册
- 能源管理总结报告
- 挖掘机售后保养及维修服务协议(2024版)
- 充电桩巡查记录表
- 阻燃材料的阻燃机理建模
- CJT 511-2017 铸铁检查井盖
- 配电工作组配电网集中型馈线自动化技术规范编制说明
- 2024高考物理全国乙卷押题含解析
- 介入科围手术期护理
- 青光眼术后护理课件
评论
0/150
提交评论