千家信息网

微信小程序音乐播放器的检索页如何制作

发表于:2025-11-20 作者:千家信息网编辑
千家信息网最后更新 2025年11月20日,本篇内容介绍了"微信小程序音乐播放器的检索页如何制作"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!这
千家信息网最后更新 2025年11月20日微信小程序音乐播放器的检索页如何制作

本篇内容介绍了"微信小程序音乐播放器的检索页如何制作"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

  这个函数很简单,我们在写历史记录页面时,已经用到了historySearchs这个数组,所以添加时我们只有获取这个数组,然后将要添加的词push到数组里,然后用setData更新页面就可以了。

  1. addHistorySearchs: function (key) {

  2. var historySearchs = this.data.historySearchs;

  3. historySearchs.push(key);

  4. this.setData({

  5. historySearchs: historySearchs

  6. })

  7. },

复制代码

  但是这样做的问题是当用户多次搜索相同内容时,数组内就会多次加入同样的词,导致我们的历史记录列表里出现重复内容,这显然是不合理的,所以我们在每次push前,需要判断数组内是否已经含有这个词。

  1. findHistorySearchs: function (key) {

  2. var historySearchs = this.data.historySearchs;

  3. for (var i = 0; i < historySearchs.length; i++) {

  4. if (historySearchs[i] == key) { return false; }

  5. }

  6. return true;

  7. },

  创建新的函数,这个函数会遍历historySearchs数组,如果存在相同项则返回false,没有相同的返回true。

  然后我们更改我们的addHistorySearchs方法:

  1. addHistorySearchs: function (key) {

  2. var historySearchs = this.data.historySearchs;

  3. if (this.findHistorySearchs(key)) {

  4. historySearchs.push(key);

  5. this.setData({

  6. historySearchs: historySearchs

  7. })

  8. }

  9. },

  有个这个方法后,我们开始逐条完成我们的事件代码。

  

  将所有更新页面有关变量添加到data里:

  1. data: {

  2. slider: [],

  3. indicatorDots: true,

  4. autoplay: true,

  5. interval: 5000,

  6. duration: 1000,

  7. radioList: [],

  8. currentView: 1,

  9. topList: [],

  10. hotkeys: [],

  11. showSpecial: false,

  12. special: { key: '', url: '' },

  13. searchKey: '',

  14. searchSongs: [],

  15. zhida: {},

  16. showSearchPanel: 1,

  17. historySearchs: [],

  18. },

  热门关键词的点击事件:

  1. hotKeysTap: function (e) {

  2. var dataSet = e.currentTarget.dataset;

  3. var key = dataSet.key; //获取点击的关键词

  4. var self = this;

  5. if (key != '') { //判断是否为空

  6. self.addHistorySearchs(key); //调用我们写好的方法,加入历史记录

  7. self.setData({

  8. searchKey: key, //为输入框内添加文字

  9. showSearchPanel: 3, //显示内容切换为搜索结果

  10. });

  11. MusicService.getSearchMusic(key, function (data) { //请求网络数据

  12. if (data.code == 0) {

  13. var songData = data.data;

  14. self.setData({ //将获得的数据添加到相应数组里

  15. searchSongs: songData.song.list,

  16. zhida: songData.zhida

  17. });

  18. }

  19. });

  20. }

  21. },

  输入框获取焦点事件:

  1. bindFocus: function (e) {

  2. var self = this;

  3. if (this.data.showSearchPanel == 1) { //判断内容是否为热门关键词

  4. self.setData({

  5. showSearchPanel: 2 //切换到历史记录

  6. })

  7. }

  8. },

  历史记录文字的点击事件:

  1. historysearchTap: function (e) {

  2. var dataSet = e.currentTarget.dataset;

  3. var key = dataSet.key; //获取点击的历史记录文字

  4. var self = this;

  5. self.setData({

  6. searchKey: key, //输入框添加文字

  7. showSearchPanel: 3 //显示搜索结果

  8. });

  9. MusicService.getSearchMusic(key, function (data) { //请求网络,获取搜索结果

  10. if (data.code == 0) {

  11. var songData = data.data;

  12. self.setData({

  13. searchSongs: songData.song.list,

  14. zhida: songData.zhida

  15. });

  16. }

  17. });

  18. },

  历史记录结尾的"X"与"清除历史记录"的点击事件:

  1. delHistoryItem: function (e) {

  2. var historySearchs = this.data.historySearchs;

  3. var dataSet = e.currentTarget.dataset; //获取点击的条目

  4. if (dataSet.index != 'undefined') {

  5. var _index = parseInt(dataSet.index); //获取点击条目为数组的第几项

  6. historySearchs.splice(_index, 1); //从数组里删除对应的条目

  7. this.setData({ //更新页面

  8. historySearchs: historySearchs

  9. });

  10. if(historySearchs.length==0){ //如果历史记录里没有数据了

  11. this.setData({

  12. showSearchPanel: 1 //切换到热门关键字

  13. })

  14. }

  15. }

  16. },

  17. clearHistorySearchs: function () {

  18. this.setData({

  19. historySearchs: [], //清空历史记录数组

  20. showSearchPanel: 1 //切换到热门关键字

  21. })

  22. },

  输入框输入事件:

  1. bindKeyInput: function (e) {

  2. var self = this;

  3. self.setData({ //更新searchKey的值

  4. searchKey: e.detail.value

  5. });

  6. if (e.detail.value == "") { //如果值为空且当前未显示热门关键字

  7. if (this.data.showSearchPanel != 1) {

  8. self.setData({

  9. showSearchPanel: 1 //切换为热门关键字

  10. })

  11. }

  12. }

  13. },

  确认按钮的点击事件:

  1. searchOk: function (e) {

  2. var self = this;

  3. var searchKey = this.data.searchKey; //获取searchKey的值

  4. if (searchKey != "") {

  5. self.setData({

  6. showSearchPanel: 3 //显示搜索结果

  7. });

  8. self.addHistorySearchs(searchKey); //添加到历史记录

  9. MusicService.getSearchMusic(searchKey, function (data) {

  10. if (data.code == 0) {

  11. var songData = data.data;

  12. self.setData({

  13. searchSongs: songData.song.list,

  14. zhida: songData.zhida

  15. });

  16. }

  17. });

  18. }

  19. },

  搜索结果item的点击事件,分为专辑与歌曲两种:

  1. zhidaTap: function (e) { //专辑的跳转事件

  2. var dataSet = e.currentTarget.dataset;

  3. var mid = dataSet.id;

  4. app.setGlobalData({ 'zhidaAlbummid': mid }); //将专辑id保存为全局变量

  5. wx.navigateTo({ //页面跳转

  6. url: '../cdinfo/cdinfo'

  7. })

  8. },

  9. musuicPlay: function (e) { //歌曲的跳转事件

  10. var dataSet = e.currentTarget.dataset;

  11. //TODO

  12. }

  13. },

"微信小程序音乐播放器的检索页如何制作"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0