网易云音乐开发--search模块基本功能实现(除历史记录模块)

news2025/1/13 3:06:40

search头部搭建

老样子搭建一个search搜索页面

 还有一块没有实现,那就是让输入框默认的文本变换颜色

 微信小程序: input输入框placeholder样式的修改_微信小程序placeholder样式_酷伊奥的博客-CSDN博客

 百度搜索了一下,找到了这个大佬的解决方案。很nice

<view class="searchContainer">
    <view class="header">
        <view class="searchInput">
            <text class="iconfont icon-search1 searchIcon"></text>
            <input type="text" placeholder="搜索歌曲" placeholder-class="placeholder-style"/>
        </view>
        <text class="cancel">取消</text>
    </view>
</view>
/* pages/search/search.wxss */
.header{
    display: flex;
    height: 60rpx;
    line-height: 60rpx;
    padding: 10rpx;
}
.searchInput{
    position: relative;
    flex: 1;
    background: rgba(237, 237, 237, 0.3);
    border-radius: 30rpx;
}
.cancel{
    width: 100rpx;
    text-align: center;
}
.searchIcon{
    position: absolute;
    left: 15rpx;
}
.searchInput input{
    margin-left: 50rpx;
    height: 60rpx;
}
.placeholder-style{
    /* color: #d43c33; */
    font-size: 30rpx;
}

热搜榜静态搭建

.hotContainer .title{
    font-size: 28rpx;
    height: 80rpx;
    line-height: 80rpx;
    border-bottom: 1rpx solid #eee;
}
.hotList{
    display: flex;
    flex-wrap: wrap;
}
.hotItem{
    width: 50%;
    height: 80rpx;
    line-height: 80rpx;
    font-size: 26rpx;
}
.hotItem .order{
    margin: 0 10rpx;
}

<view class="hotContainer">
        <view class="title">热搜榜</view>
        <!-- 热搜列表 -->
        <view class="hotList">
            <view class="hotItem">
                <text class="order">1</text>
                <text >偏爱</text>
            </view>
            <view class="hotItem">
                <text class="order">1</text>
                <text >偏爱</text>
            </view>
            <view class="hotItem">
                <text class="order">1</text>
                <text >偏爱</text>
            </view>
            <view class="hotItem">
                <text class="order">1</text>
                <text >偏爱</text>
            </view>
            <view class="hotItem">
                <text class="order">1</text>
                <text >偏爱</text>
            </view>
            <view class="hotItem">
                <text class="order">1</text>
                <text >偏爱</text>
            </view>
            <view class="hotItem">
                <text class="order">1</text>
                <text >偏爱</text>
            </view>
            <view class="hotItem">
                <text class="order">1</text>
                <text >偏爱</text>
            </view>
            <view class="hotItem">
                <text class="order">1</text>
                <text >偏爱</text>
            </view>
            <view class="hotItem">
                <text class="order">1</text>
                <text >偏爱</text>
            </view>
            <view class="hotItem">
                <text class="order">1</text>
                <text >偏爱</text>
            </view>
            <view class="hotItem">
                <text class="order">1</text>
                <text >偏爱</text>
            </view>
            <view class="hotItem">
                <text class="order">1</text>
                <text >偏爱</text>
            </view>
            <view class="hotItem">
                <text class="order">1</text>
                <text >偏爱</text>
            </view>



        </view>
    </view>

热搜榜,placeholder数据动态展示

查看文档

网易云音乐 NodeJS 版 API (binaryify.github.io) 

 返回来的数据是这样的

书写返回搜索数据的方法

 已经变成了动态数据

onLoad(options) {
        // 初始化数据
        this.getInfoData()
    },
    async getInfoData(){
        let placeholderData=await request('/search/default')
        this.setData({
            placeholderContent:placeholderData.data.showKeyword
        })
    },

 热搜榜动态数据

 跟之前的方法一样

let hotListData=await request('/search/hot/detail')



hotList:hotListData.data

 然后在去添加icon

 <image class="iconImg" wx:if="{{item.iconUrl}}" src="{{item.iconUrl}}" mode=""/>

如果不添加wx:if会导致占空间

关键字模糊匹配搜索数据

这里要说到表达项的俩个数据

input-->实时监听       change-->使其焦点

首先,我们需要拿到表单项的数据,然后调用接口,拿数据

 

这样就能拿到表单项的内容,但是是一个对象。

这里有一个疑惑?为什么我们没有value={{searchList}}但是能动态的渲染出来 ?

 因为这个bindinput事件默认返回的就是value的值

我们为了性能优化,使用节流

handleInputChange(event){
        this.setData({
            searchContent:event.detail.value.trim()
        })
        // 函数节流
        if(isSend){
            return
        }
        isSend=true
        this.getSearchList()
        setTimeout(()=>{
            // 发请求获取关键字模糊匹配数据
             isSend=false
        },300)
    },
    //获取搜索数据的功能函数
    async getSearchList(){
        let searchListData=await request('/search',{keywords:this.data.searchContent,limit:10})
            this.setData({
                searchList:searchListData.result.songs
            })
    },

搜索列表动态显示

就是根据这一块,我们先搭一个界面,然后把返回回来的数据动态渲染到页面上,就可以了

 样式书写完毕,但是又有一个bug

 当我们删除掉这个字母的时候,是空串,然后向服务器发请求,会报错

 我们如果输入的是一个空串,直接return出去就可以了

看这个页面还是很乱,搜索内容展示与热搜榜,应该是一种互斥的效果

 我们通过这个wx:if来实现,如果数组有数据,那么就显示,否则不显示 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/558078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ICV:中国的数字经济与5G市场研究报告

近日&#xff0c;专注于前沿科技领域的国际咨询机构ICV发布了《中国的数字经济与5G市场研究报告》。报告指出&#xff0c;随着5G商用的发展&#xff0c;5G对经济社会的影响逐步显现&#xff0c;其影响突出体现在对数字产业发展的带动上。随着5G应用的不断创新与扩散&#xff0c…

chrome插件打包之后,显示此扩展程序可能已损坏

每日鸡汤&#xff0c;每个你想要学习的瞬间都是未来的你向自己求救 问题是这样的&#xff0c;我们有一个chrome插件的项目&#xff0c;但是我也没有参与开发&#xff0c;可以说此前对chrome插件一窍不通。但是今天呢&#xff0c;有个bug&#xff0c;要我改&#xff0c;我就拉一…

基于Java+SpringBoot+Vue的校园交友网站的设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

为什么x86架构一个字节是8个bit

探究计算机存储的历史&#xff1a;为什么x86架构下一个字节是8个bit 原文链接&#xff1a;Some possible reasons for 8-bit bytes About author I’m a software developer. I live in Montreal. I sometimes give talks. Most of my income comes from my programming zines…

【博览群书】《实战大数据》——属于我的第一本大数据图书

文章目录 前言简介目录其他 前言 Hello家人们&#xff0c;博主前不久参加了CSDN图书馆和机械工业出版社联合举办的图书类活动&#xff0c;很荣幸在活动中获得了属于自己的第一本大数据图书&#xff0c;《实战大数据—— 分布式大数据分析处理系统开发与应用》。作为大数据专业…

五、数据仓库详细介绍(建模)理论篇

1 前言 大家好&#xff0c;本篇文章是数仓详细介绍系列的第四篇。 第一篇是简单介绍&#xff0c;后三篇属于数仓设计部分&#xff1a; 数仓概述&#xff0c;这一篇我给大家简单介绍了数据仓库的基本概念和大致构建过程&#xff0c;没有过多深入主要是给大家有个基本的了解。 数…

数字孪生应用落地,“未来之城”或成智慧城市新形态

“最近&#xff0c;到北京大学人民医院西直门院区就诊的患者发现&#xff1a;动辄绵延数百米的“车龙”消失了&#xff0c;周边道路也变得畅通起来。高峰期排队进院花费的时间&#xff0c;从过去1个多小时减至现在的10分钟左右。 与之相隔不远的北京市西城区城市管理委员会办公…

Java程序设计入门教程--类的行为

类的成员方法是Java描述类对象行为的途径。成员方法的定义应包含两部分内容&#xff1a;方法声明和方法体。 方法定义常用的格式如下&#xff1a; [public/protected/private][static][final/abstract] returnType methodName([param List]) [throw…

ER图和数据库模型图怎么使用呢?

1. 简介 对于从事数据库结构设计相关人员而言&#xff0c;我们通常会在设计的不同阶段用到ER图和数据库模型图&#xff0c;用来描述数据之间的组成结构和数据间的关系&#xff0c;但是很多画图人员会把它们两者给搞混了&#xff0c;下面就来聊聊它们之间的区别。 1、ER图全称…

【TES600】基于XC7K325T与TMS320C6678的通用信号处理平台

板卡概述 TES600是一款基于FPGA&#xff0b;DSP协同处理架构的通用高性能实时信号处理平台&#xff0c;该平台采用1片TI的KeyStone系列多核浮点/定点DSP TMS320C6678作为主处理单元&#xff0c;采用1片Xilinx的Kintex-7系列FPGA XC7K325T作为协处理单元&#xff0c;具有1个FMC子…

XML配置方式SSM框架西蒙购物网

文章目录 一、网站功能需求二、网站设计思路&#xff08;一&#xff09;设计模式&#xff08;二&#xff09;网站前台&#xff08;三&#xff09;网站后台1、用户管理2、类别管理3、商品管理4、订单管理 &#xff08;四&#xff09;购物流程图 三、网站运行效果四、网站实现步骤…

大一新生如何自学JavaScript?

前言 针对于题主的情况&#xff0c;我特意做了一份Js方面的知识路线图以及一些知识点讲解的资源链接&#xff0c;希望对于还未学习Js或者已经学习了Js但没有但没有一个系统路线的小伙伴能有一些帮助~ 先放上路线图 img 部分重要知识点 基础性知识 声明变量 null 和 undefi…

二总线-MBus讲解

二总线的叫法演变是从多线到总线再到二总线这么一个过程&#xff0c;尤其在楼宇的消防领域&#xff0c;报警的设备总线基本已经是二总线了&#xff0c;其特点就是电源与通信一起传输&#xff0c;本质上是一个电力载波的思路。那么现在的powerbus二总线又是一个极端&#xff0c;…

chatgpt赋能Python-python_judge

Python Judge&#xff1a;一个高效的Python代码评测平台 如果你是一个Python程序员或是教师&#xff0c;你一定需要测试你的Python代码表现。Python Judge是一个专门为Python程序员设计的代码评测平台&#xff0c;它可以帮助你测试你的Python代码的运行时间、空间占用和准确性…

DDD在前端应用中的一些思考

作者&#xff1a;吴尔畅 DDD旨在解决业务逻辑的复杂性&#xff0c;而业务逻辑大部分场景下不存在于前端。但在一些复杂的应用中&#xff0c;前端可能需要处理一些业务逻辑&#xff0c;此时DDD的一些思想和方法可能有助于组织前端代码&#xff0c;使其更易于理解和维护。 一、什…

【STL模版库】list介绍及使用 {inserterase的迭代器失效问题,vector_sort VS list_sort,list的其他接口函数}

一、list的介绍 list是可以在常数时间内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向带头循环链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元…

JavaEE(系列10) -- 多线程案例3(定时器)

目录 1. 定时器 2. 标准库中的定时器 3. 实现定时器 3.1 创建带优先级的阻塞队列 3.2 创建MyTask类 3.3 构建schedule方法 3.4 构建timer类中的线程 3.5 思考 1. 定时器 定时器也是软件开发中的一个重要组件. 类似于一个 "闹钟". 达到一个设定的时间之后, 就执行某…

chatgpt赋能Python-python_gauge

Python Gauge: 新一代的测试工具 Python Gauge是一个用于自动化测试的轻量级框架&#xff0c;它具有可扩展性和适应性&#xff0c;特别适合测试大型应用程序。Python Gauge支持多种编程语言包括Python&#xff0c;Java&#xff0c;C#和Ruby&#xff0c;因此可以应对各种情况。…

燃气管网监测系统:解析地下管道安全隐患

地下燃气管道是现代城市能源供应的重要组成部分&#xff0c;它们为居民和工业提供了安全、便利的燃气能源。然而&#xff0c;随着时间的推移&#xff0c;地下燃气管道可能出现安全隐患&#xff0c;如老化、腐蚀、机械损伤等&#xff0c;这可能导致泄漏、爆炸和环境污染等严重后…

Bits, Bytes and Integers——二进制unsigned以及Two-complement表示,十六进制

这篇文章梳理一下Bits, Bytes and Integers——二进制unsigned以及Two-complement表示&#xff0c;十六进制这些事儿。 计算机中所有数据都是用二进制的0和1组成的&#xff0c;直接上知识点。 二进制 Unsigned以及Two-complement 同样的一串二进制数&#xff0c;按照有符号…