2018/3/21 0:00:00
泉源:不详
作者:未知
首页的最后一部分为检索页,,,,也就是让用户通过要害字搜索歌曲或专辑。。。。。。
说到搜索页,,,,比不可少的就是要害字的输入框。。。。。。
参照这个样式,,,,结构文件应该为:
-
<view class="search-bar">
-
<view class="search-input-warp">
-
<form bindsubmit="searchSubmit">
-
<label class="search-input-icon"></label>
-
<input type="text" class="search-input" bindfocus="bindFocus" name="search" value="{{searchKey}}" bindinput="bindKeyInput" placeholder="搜索歌曲、歌单、专辑" placeholder-class="search-input-placeholder"/>
-
<view class="search-cancel" bindtap="searchOk">确定</view>
-
</form>
-
</view>
-
</view>
复制代码
名堂文件为:
-
.search-bar {
-
background:#f7f7f7;
-
padding:20rpx;
-
}
-
.search-input-warp {
-
position:relative;
-
padding:16rpx 24rpx 16rpx 70rpx;
-
background:#fff;
-
}
-
.search-input-icon {
-
content:" ";
-
position:absolute;
-
top:18rpx;
-
left:20rpx;
-
display:inline-block;
-
vertical-align:middle;
-
width:40rpx;
-
height:40rpx;
-
background-image:url(/miniprogramdev/resources/images/search.png");
-
background-repeat:no-repeat;
-
background-size:40rpx;
-
}
-
.search-input {
-
font-size:28rpx;
-
line-height:40rpx;
-
}
-
.search-input-placeholder {
-
color:#ddd;
-
font-size:28rpx;
-
line-height:40rpx;
-
}
-
.search-cancel {
-
position:absolute;
-
right:0;
-
top:0;
-
display:inline-block;
-
font-size:32rpx;
-
height:90rpx;
-
width:140rpx;
-
text-align:center;
-
line-height: 90rpx;
-
z-index:50;
-
background:#f7f7f7;
-
}
复制代码
由于要提交要害字,,,,以是使用表单组件,,,,内部由体现搜索的放大镜图标,,,,代表输入完成的“确定”按钮以及输入框组成。。。。。。
除了输入框以外,,,,此页还需要显示的内容应该是搜索的效果列表,,,,搜索的历史纪录以及热门要害字。。。。。。这些内容应该显示在输入框下方,,,,并按一定逻辑切换。。。。。。他们之间的逻辑关系为:
-
用户进入检索页,,,,显示的内容应该是输入框与热门要害字。。。。。。
-
最先输入后(即输入框获得焦点),,,,应该显示历史纪录。。。。。。
-
点击确定,,,,显示效果列表。。。。。。
-
清空输入框内容后,,,,返回要害字显示。。。。。。
可以看出,,,,对输入框的操作决议了目今页面显示的内容,,,,以是我们需要监听输入框的获取焦点事务(bindfocus),,,,确定点击事务(bindtap)以及输入事务(bindinput),,,,还需要纪录输入的要害字searchKey。。。。。。
输入框完成后我们先写热门要害字,,,,这些要害字也是泉源于网络,,,,以是还需要请求网络。。。。。。在services/music里添加要领:
-
function getHotSearchKey(callback){
-
var data = {
-
g_tk: 5381,
-
uin: 0,
-
format: 'json',
-
inCharset: 'utf-8',
-
outCharset: 'utf-8',
-
notice: 0,
-
platform: 'h5',
-
needNewCode: 1,
-
_: Date.now()
-
};
-
wx.request({
-
url: 'http://c.y.qq.com/splcloud/fcgi-bin/gethotkey.fcg',
-
data: data,
-
header: {
-
'Content-Type': 'application/json'
-
},
-
success: function (res) {
-
if (res.statusCode == 200) {
-
callback(res.data)
-
} else {
-
-
}
-
}
-
});
-
}
-
...
-
module.exports = {
-
...
-
getHotSearchKey:getHotSearchKey
-
}
复制代码
返回JSON名堂效果为
-
{
-
"code": 0,
-
"data": {
-
"hotkey": [
-
{
-
"k": "三生三世十里桃花 ",
-
"n": 90558
-
},
-
{
-
"k": "DJ ",
-
"n": 67590
-
},
-
{
-
"k": "薛之谦 ",
-
"n": 60425
-
},
-
{
-
"k": "凉凉 ",
-
"n": 37056
-
},
-
{
-
"k": "那片星空那片海 ",
-
"n": 29170
-
},
-
{
-
"k": "理想 ",
-
"n": 28695
-
},
-
...
-
],
-
"special_key": "歌手",
-
"special_url": "http://y.qq.com/m/act/singer/index.html?ADTAG=search"
-
},
-
"subcode": 0
-
}
复制代码
这里返回的hotkey就是我们需要的要害字啦,,,,除此之外,,,,我们还看到下面有“special_key”这一部分,,,,这相当于广告部分,,,,为服务器推荐的搜索要害字。。。。。。以是我们以标签的形式显示要害字,,,,关于广告那部分要害字,,,,我们以红色字体,,,,并且放在最前方,,,,最后告竣的样式应该为图10-5所示:
![微信小程序音乐播放器,音乐播放器检索页制作(上) - KES 微信小程序音乐播放器,音乐播放器检索页制作(上)]()
43232.png (5.21 KB, 下载次数: 4)
下载附件
生涯到相册
2017-2-15 11:19 上传
实现这一结构的代码为:
-
<view class="quick-search" wx:if="{{showSearchPanel == 1}}">
-
<view class="quick-search-title">
-
<text>热门搜索</text>
-
</view>
-
<view class="quick-search-bd">
-
<text class="quick-search-item-red" data-url="{{special.url}}" data-key="{{special.key}}" bindtap="hotKeysTap" wx:if="{{showSpecial}}">{{special.key}}</text>
-
<text class="quick-search-item" wx:for="{{hotkeys}}" wx:key="unique" data-n="{{item.n}}" bindtap="hotKeysTap" data-key="{{item.k}}">{{item.k}}</text>
-
</view>
-
</view>
复制代码
这内里showSearchPanel的值为我们控制这一页面切换的依据,,,,当其为1的时间,,,,显示热门要害字。。。。。。
绑定的数据有两个,,,,special和hotkey。。。。。。关于special部分,,,,为了防止服务器缺失“special_key”这一部分从而导致没有数据显示,,,,我们界说一个数据showSpecial来决议是否显示这一部分。。。。。。
将这三个数据以及输入框用到的searchKey添加到data里吧。。。。。。
修改index.js文件:
-
//引用网络请求文件
-
var MusicService = require('../../services/music');
-
-
//获取应用实例
-
var app = getApp()
-
Page({
-
data: {
-
indicatorDots: true,
-
autoplay: true,
-
interval: 5000,
-
duration: 1000,
-
radioList: [],
-
slider: [],
-
mainView: 1,
-
topList:[],
-
hotkeys: [],
-
showSpecial: false,
-
special: { key: '', url: '' },
-
searchKey: '',
-
},
-
onLoad: function () {
-
var that = this;
-
MusicService.getRecommendMusic(that.initPageData);
-
MusicService.getTopMusic(that.initTopList);
-
MusicService.getHotSearchKeys(that.initSearchHotKeys);
-
},
-
-
...
-
initSearchHotKeys: function (data) {
-
var self = this;
-
if (data.code == 0) {
-
var special = { key: data.data.special_key, url: data.data.special_url };
-
var hotkeys = [];
-
if (data.data.hotkey && data.data.hotkey.length) { //当返回数据不为空且长度不为0
-
for (var i = 0; (i < data.data.hotkey.length && i < 6); i++) { //若是长度大于6只保存前6个
-
var item = data.data.hotkey[i];
-
hotkeys.push(item);
-
}
-
}
-
if (special != undefined) { //当返回项有special部分时,,,,showSpecial为true
-
self.setData({
-
showSpecial: true
-
})
-
} else { //没有special部分,,,,showSpecial为false
-
self.setData({
-
showSpecial:false
-
})
-
}
-
self.setData({
-
special: special,
-
hotkeys: hotkeys
-
})
-
}
-
},
-
...
-
})
复制代码
数据加载完成后,,,,我们为每个热门要害字view添加点击事务。。。。。。
-
hotKeysTap: function (e) {
-
//TODO
-
},
复制代码
在这个点击事务里,,,,我们需要做的事情有:
-
将点击的要害词加入历史纪录。。。。。。
-
将页面切换到搜索效果列表。。。。。。 在完成搜索效果列表页后我们再来完善这一部分吧。。。。。。
最后附上这一部分的名堂文件。。。。。。
-
.quick-search {
-
padding:20rpx;
-
box-sizing:border-box;
-
}
-
.quick-search-title {
-
font-size:28rpx;
-
}
-
.quick-search-bd {
-
position:relative;
-
margin-top:20rpx;
-
}
-
.quick-search-item {
-
font-size:28rpx;
-
float:left;
-
margin:0 20rpx 20rpx 0;
-
line-height:40rpx;
-
padding:10rpx 20rpx;
-
border-radius:30rpx;
-
color:#000;
-
border:2rpx solid rgba(0,0,0,.6);
-
}
-
.quick-search-item-red {
-
font-size:28rpx;
-
float:left;
-
margin:0 20rpx 20rpx 0;
-
line-height:40rpx;
-
padding:10rpx 20rpx;
-
border-radius:30rpx;
-
color:#fc4524;
-
border:2rpx solid #fc4524;
-
}
复制代码
上一节:微信小程序小白项目开发案例之音乐播放器—排行页
【本站声明】
1、本站文章中所选用的图片及文字泉源于网络以及用户投稿,,,,由于未联系到知识产权人或未发明有关知识产权的挂号,,,,若有知识产权人并不肯意我们使用,,,,若是有侵权请连忙联系。。。。。。
2、本网站差池文章中所涉及的内容真实性、准确性、可靠性认真,,,,仅系客观性形貌,,,,如您需要相识该类商品/服务详细的资讯,,,,请您直接与该类商品/服务的提供者联系。。。。。。
KESION pp电子软件
KESION pp电子软件是海内领先的在线教育软件及私域社交电商软件服务提供商,,,,恒久专注于为企业提供在线教育软件及社交电商SaaS平台解决方案。。。。。。
公司焦点产品云开店SaaS社交电商服务平台、在线教育SaaS服务平台、教育企业数字化SaaS云平台、企微营销助手、私有化自力安排品牌网校和在线教育咨询等。。。。。。KESION 一直通过手艺立异,,,,提供产品和服务,,,,助力企业向数字化转型,,,,通过科技驱动商业刷新,,,,让商业变得更智慧!