2020/9/27 0:00:00
泉源:不详
作者:未知
检索页 (下)
到现在为止,,我们已经完成了检索页所有的结构和名堂文件,,也完成了所有的数据请求函数,,现在我们需要将这些串联起来,,实现这三部分间的切换。。。。。。

总结一下我们需要完成的逻辑有:
-
点击热门要害字,,页面内容酿成搜索效果页(需要请求网络,,用我们写好的getSearchMusic要领),,输入框内显示点击的要害字,,同时这个要害字加入历史搜索效果。。。。。。
-
在页面内容为热门要害字的时间,,点击输入框使其获得焦点时,,页面内容酿成历史纪录。。。。。。
-
点击历史纪录文字,,内容酿成搜索效果(请求网络),,输入框显示这个纪录。。。。。。
-
点击历史纪录每条末尾的“X”,,删除这一条纪录,,当所有纪录所有删除或点击了“扫除历史纪录”选项,,内容变为热门要害字。。。。。。
-
输入框内的内容被所有删除后,,也返回热门要害字。。。。。。
-
点击确认按钮,,内容变为搜索效果页,,同时加入历史纪录。。。。。。
-
点击搜索效果的item,,页面转到专辑页或音乐播放页。。。。。。
实现这些逻辑的相关事务我们已经在页面里注册好了,,在详细实现这些事务之前,,我们先写一个函数——将字符串加入到历史纪录。。。。。。
这个函数很简朴,,我们在写历史纪录页面时,,已经用到了historySearchs这个数组,,以是添加时我们只有获取这个数组,,然后将要添加的词push到数组里,,然后用setData更新页面就可以了。。。。。。
-
addHistorySearchs: function (key) {
-
var historySearchs = this.data.historySearchs;
-
historySearchs.push(key);
-
this.setData({
-
historySearchs: historySearchs
-
})
-
},
复制代码
可是这样做的问题是当用户多次搜索相同内容时,,数组内就会多次加入同样的词,,导致pp电子历史纪录列内外泛起重复内容,,这显然是不对理的,,以是我们在每次push前,,需要判断数组内是否已经含有这个词。。。。。。
-
findHistorySearchs: function (key) {
-
var historySearchs = this.data.historySearchs;
-
for (var i = 0; i < historySearchs.length; i++) {
-
if (historySearchs[i] == key) { return false; }
-
}
-
return true;
-
},
复制代码
建设新的函数,,这个函数会遍历historySearchs数组,,若是保存相同项则返回false,,没有相同的返回true。。。。。。
然后我们更改pp电子addHistorySearchs要领:
-
addHistorySearchs: function (key) {
-
var historySearchs = this.data.historySearchs;
-
if (this.findHistorySearchs(key)) {
-
historySearchs.push(key);
-
this.setData({
-
historySearchs: historySearchs
-
})
-
}
-
},
复制代码
有个这个要领后,,我们最先逐条完成pp电子事务代码。。。。。。
将所有更新页面有关变量添加到data里:
-
data: {
-
slider: [],
-
indicatorDots: true,
-
autoplay: true,
-
interval: 5000,
-
duration: 1000,
-
radioList: [],
-
currentView: 1,
-
topList: [],
-
hotkeys: [],
-
showSpecial: false,
-
special: { key: '', url: '' },
-
searchKey: '',
-
searchSongs: [],
-
zhida: {},
-
showSearchPanel: 1,
-
historySearchs: [],
-
},
复制代码
热门要害词的点击事务:
-
hotKeysTap: function (e) {
-
var dataSet = e.currentTarget.dataset;
-
var key = dataSet.key; //获取点击的要害词
-
var self = this;
-
if (key != '') { //判断是否为空
-
self.addHistorySearchs(key); //挪用我们写好的要领,,加入历史纪录
-
self.setData({
-
searchKey: key, //为输入框内添加文字
-
showSearchPanel: 3, //显示内容切换为搜索效果
-
});
-
MusicService.getSearchMusic(key, function (data) { //请求网络数据
-
if (data.code == 0) {
-
var songData = data.data;
-
self.setData({ //将获得的数据添加到响应数组里
-
searchSongs: songData.song.list,
-
zhida: songData.zhida
-
});
-
}
-
});
-
}
-
},
复制代码
输入框获取焦点事务:
-
bindFocus: function (e) {
-
var self = this;
-
if (this.data.showSearchPanel == 1) { //判断内容是否为热门要害词
-
self.setData({
-
showSearchPanel: 2 //切换到历史纪录
-
})
-
}
-
},
复制代码
历史纪录文字的点击事务:
-
historysearchTap: function (e) {
-
var dataSet = e.currentTarget.dataset;
-
var key = dataSet.key; //获取点击的历史纪录文字
-
var self = this;
-
self.setData({
-
searchKey: key, //输入框添加文字
-
showSearchPanel: 3 //显示搜索效果
-
});
-
MusicService.getSearchMusic(key, function (data) { //请求网络,,获取搜索效果
-
if (data.code == 0) {
-
var songData = data.data;
-
self.setData({
-
searchSongs: songData.song.list,
-
zhida: songData.zhida
-
});
-
}
-
});
-
},
复制代码
历史纪录最后的“X”与“扫除历史纪录”的点击事务:
-
delHistoryItem: function (e) {
-
var historySearchs = this.data.historySearchs;
-
var dataSet = e.currentTarget.dataset; //获取点击的条目
-
if (dataSet.index != 'undefined') {
-
var _index = parseInt(dataSet.index); //获取点击条目为数组的第几项
-
historySearchs.splice(_index, 1); //从数组里删除对应的条目
-
this.setData({ //更新页面
-
historySearchs: historySearchs
-
});
-
if(historySearchs.length==0){ //若是历史纪录里没有数据了
-
this.setData({
-
showSearchPanel: 1 //切换到热门要害字
-
})
-
}
-
}
-
},
-
clearHistorySearchs: function () {
-
this.setData({
-
historySearchs: [], //清空历史纪录数组
-
showSearchPanel: 1 //切换到热门要害字
-
})
-
},
复制代码
输入框输入事务:
-
bindKeyInput: function (e) {
-
var self = this;
-
self.setData({ //更新searchKey的值
-
searchKey: e.detail.value
-
});
-
if (e.detail.value == "") { //若是值为空且目今未显示热门要害字
-
if (this.data.showSearchPanel != 1) {
-
self.setData({
-
showSearchPanel: 1 //切换为热门要害字
-
})
-
}
-
}
-
},
复制代码
确认按钮的点击事务:
-
searchOk: function (e) {
-
var self = this;
-
var searchKey = this.data.searchKey; //获取searchKey的值
-
if (searchKey != "") {
-
self.setData({
-
showSearchPanel: 3 //显示搜索效果
-
});
-
self.addHistorySearchs(searchKey); //添加到历史纪录
-
MusicService.getSearchMusic(searchKey, function (data) {
-
if (data.code == 0) {
-
var songData = data.data;
-
self.setData({
-
searchSongs: songData.song.list,
-
zhida: songData.zhida
-
});
-
}
-
});
-
}
-
},
复制代码
搜索效果item的点击事务,分为专辑与歌曲两种:
-
zhidaTap: function (e) { //专辑的跳转事务
-
var dataSet = e.currentTarget.dataset;
-
var mid = dataSet.id;
-
-
app.setGlobalData({ 'zhidaAlbummid': mid }); //将专辑id生涯为全局变量
-
wx.navigateTo({ //页面跳转
-
url: '../cdinfo/cdinfo'
-
})
-
-
},
-
musuicPlay: function (e) { //歌曲的跳转事务
-
var dataSet = e.currentTarget.dataset;
-
//TODO
-
}
-
},
复制代码
歌曲的跳转事务相对重大(不但是要跳转,,并且要加入播放列表),,我们留到播放页再更改这部分吧。。。。。。
至此,,首页内容所有完成(准确的说还缺少推荐页与搜索效果页向音乐播放页跳转的事务)。。。。。。
上一节:微信小程序小白项目开发案例之音乐播放器—检索页(中)
下一节:微信小程序小白项目开发案例之音乐播放器——列表页
【本站声明】
1、本站文章中所选用的图片及文字泉源于网络以及用户投稿,,由于未联系到知识产权人或未发明有关知识产权的挂号,,若有知识产权人并不肯意我们使用,,若是有侵权请连忙联系。。。。。。
2、本网站差池文章中所涉及的内容真实性、准确性、可靠性认真,,仅系客观性形貌,,如您需要相识该类商品/服务详细的资讯,,请您直接与该类商品/服务的提供者联系。。。。。。
KESION pp电子软件
KESION pp电子软件是海内领先的在线教育软件及私域社交电商软件服务提供商,,恒久专注于为企业提供在线教育软件及社交电商SaaS平台解决方案。。。。。。
公司焦点产品云开店SaaS社交电商服务平台、在线教育SaaS服务平台、教育企业数字化SaaS云平台、企微营销助手、私有化自力安排品牌网校和在线教育咨询等。。。。。。KESION 一直通过手艺立异,,提供产品和服务,,助力企业向数字化转型,,通过科技驱动商业刷新,,让商业变得更智慧!