微信小程序 -订阅发布模式

图形展示:

代码展示:

1. 安装模块 pubsub-js

npm i pubsub-js --save

2. 导入模块(在需要订阅发布的 js 页面内进行导入)

import PubSub from 'pubsub-js'

注:在微信小程序中无法直接npm 下载 导入 的(安装一个就需要构建一次)

解决:菜单栏 --> 工具 -->  构建 npm  点击即可(会出现新的目录)

详情页:

1. 绑定两个事件,用于在点击 prev(上一页)  next(下一页) 时触发事件

wxml页面:

<viewclass="musicControl"><text class="iconfont icon-iconsMusicyemianbofangmoshiShuffle"></text><textclass="iconfont icon-shangyishou"id="pre"bindtap="switchMusic"  //绑定事件></text><textclass="iconfont {{isPlay ? "icon-zanting':'icon-bofang' } big"bindtap="musicPlay"  ></text><text class="iconfont icon-next" id="next bindtap="switchMusic'  //绑定事件></text><text class="iconfont icon-iconsMusicyemianbofangmoshiplayList"></text>
</view>

2. 触发事件,使用 PubSub 的 publish 方法进行发布 

js页面:

switchMusic(e){//是需要向歌曲列表页进行信息的发布const type = e.currentTarget.id;PubSub.publish("switchType",type);
},

3. 在生命周期 onLoad 中 使用 PubSubsubscribe 方法对列表页发布的内容进行订阅

有两个参数:

        参数一:要订阅的发布名称

        参数二:回调函数,处理订阅的 发布信息内容

                函数参数一 (msg):发布的对应名称  如:PubSub.publish("musicId",musicId);

                函数参数二 (musicId):发布的对应参数  如:PubSub.publish("musicId",musicId);
 

onLoad(options) {PubSub.subscribe("musicId",(msg, musicId) => {console.log("musicId:", musicId);});
},

列表页:
1. 在生命周期 onLoad 中 使用 PubSub 的 subscribe 方法对详情页发布的内容进行订阅

有两个参数:

        参数一:要订阅的发布名称

        参数二:回调函数,处理订阅的 发布信息内容

                函数参数一 (msg):发布的对应名称  如:  PubSub.publish("switchType",type);

                函数参数二 (type):发布的对应参数  如: PubSub.publish("switchType",type);
 

onLoad(options) {PubSub.subscribe("switchType",(msg, type) => {let { index, recommendList } = this.data;// 控制边界if(type === "next") {index === recommendList.length -1 && (index = -1);// 下一首index += 1;} else {index === 0 && (index = recommendList.length);//上一首index -= 1;}console.log(index);});
},

2. 处理完数据后,在下方使用 PubSub 的 publish 方法进行发布

onLoad(options) {PubSub.subscribe("switchType",(msg, type) => {let { index, recommendList } = this.data;if(type === "next") {// 下一首index += 1;} else {//上一首index -= 1;}console.log(index);let musicId = recommendList[index].id;PubSub.publish("musicId",musicId); //将音乐id发布到详情页this.setData({index,});});
},

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

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

相关文章

会声会影2024编辑过程很卡怎么解决

会声会影是一款常用的视频剪辑软件&#xff0c;在使用过程中&#xff0c;可能会遇到视频卡顿的情况。造成这种情况的原因有很多&#xff0c;下面我就给大家讲解一下用会声会影做视频会卡的原因&#xff0c;会声会影剪辑时卡顿怎么设置的方法。 会声会影 2022 安装包:https://so…

思维模型 心理防御机制

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。用幻想保护自己。 1 心理防御机制的应用 1.1 以下是心理防御机制在人际关系中的应用 1 心理防御机制的正向使用 小明在一次重要的演讲中犯了一个错误&#xff0c;他感到非常尴尬和失落。…

vue+echarts实现桑吉图的效果

前言&#xff1a; 在我们项目使用图形的情况下&#xff0c;桑吉图算是冷门的图形了&#xff0c;但是它可以实现我们对多级数据之间数据流向更好的展示的需求&#xff0c;比如&#xff0c;我们实际数据流向中&#xff0c;具有1对多&#xff0c;多对多的情况下&#xff0c;如果用…

深入理解mysql的explain命令

1 基础 全网最全 | MySQL EXPLAIN 完全解读 1.1 MySQL中EXPLAIN命令提供的字段包括&#xff1a; id&#xff1a;查询的标识符。select_type&#xff1a;查询的类型&#xff08;如SIMPLE, PRIMARY, SUBQUERY等&#xff09;。table&#xff1a;查询的是哪个表。partitions&…

《Java 并发编程艺术》笔记(上)

如何减少上下文切换 减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。 无锁并发编程&#xff1a;多线程竞争锁时&#xff0c;会引起上下文切换&#xff0c;所以多线程处理数据时&#xff0c;可以用一些办法来避免使用锁。如将数据的 ID 按照 Hash 算法…

空对象指针为什么有时候能调用成员函数

在谈这个话题之前呢&#xff0c;还是得了解一下内存布局&#xff0c;以x86的32位系统为例&#xff1a; 然后得明确一点&#xff0c;NULL指针是无法访问的&#xff0c;如果强行访问&#xff0c;则会引发异常 然而空对象指针有时候却能够调用成员函数 class C { public:int a;st…

kali linux下可用的wine QQ/微信

kali linux下可以使用网页版本的 QQ/微信。但是体验差强人意&#xff0c;无法截图&#xff0c;无法发送word中的复制文字&#xff0c;反而能发送excel表格中的复制文字&#xff0c;无法拖拽发送等多种难以接受的体验。 所以尝试wine 版本&#xff0c;好处是通过交叉编译&#…

【linux系统编程】编辑器gcc/g++

目录 Linux下的编辑器 介绍&#xff1a; 1&#xff0c;编辑器gcc/g 1-1&#xff0c;系统的编译过程 1-2&#xff0c;预处理过程 1-3&#xff0c;编译过程 1-4&#xff0c;汇编过程 1-5&#xff0c;链接过程 Linux下的编辑器 介绍&#xff1a; Linux系统下可支持很多高…

Python读写txt文件数据

&#x1f388; 博主&#xff1a;一只程序猿子 &#x1f388; 博客主页&#xff1a;一只程序猿子 博客主页 &#x1f388; 个人介绍&#xff1a;爱好(bushi)编程&#xff01; &#x1f388; 创作不易&#xff1a;如喜欢麻烦您点个&#x1f44d;或者点个⭐&#xff01; &#x1f…

html和css写淘宝的快速导航条

目录 1、css代码 2、html代码 1、css代码 <style>* {margin: 0;padding: 0;list-style: none;text-decoration: none;}.nav {width: 900px;height: 40px;background-color: rgb(247, 249, 250);margin: 50px auto;padding-left: 30px;}.nav>li {float: left;width: 1…

云天励飞即将亮相“双数峰会”

第二届数字政府建设峰会暨数字湾区发展论坛即将在12月8-10日举办。本次“双数”峰会上&#xff0c;云天励飞将与CEC联合展示&#xff0c;重点展出大模型在数字政府领域的创新应用&#xff0c;以及云天励飞自主研发的大模型推理芯片。 “云天天书”包含通用大模型、行业大模型、…

Kali Linux 2023.4 已经发布了!

开发人员推出了 Kali Linux 2023.4&#xff0c;这是2023 年发行版的第四个也是最后一个版本。 新产品已经可供下载&#xff0c;包含15 个新工具和 GNOME 45。 Offective Security 团队报告称&#xff0c;在今年的最终版本中&#xff0c;操作系统中并没有添加太多新功能&…

用 C 写一个卷积神经网络

用 C 写一个卷积神经网络 深度学习领域最近发展很快&#xff0c;前一段时间读transformer论文《Attention Is All You Need》时&#xff0c;被一些神经网络和深度学习的概念搞得云里雾里&#xff0c;其实也根本没读懂。发现深度学习和传统的软件开发工程领域的差别挺大&#xf…

动态代理配置方法。如何使用代理IP保护隐私安全?

随着网络技术的不断发展&#xff0c;越来越多的人开始使用代理IP来保护自己的隐私安全。代理IP是一种通过代理服务器来访问网络的特殊技术&#xff0c;可以隐藏用户的真实IP地址&#xff0c;从而保护用户的隐私。本文将介绍动态代理的配置方法以及如何使用代理IP保护隐私安全。…

Transformer中的layer norm(包含代码解释)

在transformer中存在add&norm操作&#xff0c;add操作很简单&#xff0c;就是把注意力矩阵和原来的矩阵相加&#xff0c;也就是残差链接&#xff0c;可以有效减少梯度消失。如下图所示&#xff0c;为layer norm的解释图&#xff0c;可以看出layer norm是针对一个token来做的…

接口自动化测试总结,接口鉴权+加密与解密+数据库操作/断言...

前言 1、接口鉴权的多种方式 1&#xff09;后端接口鉴权常用方法 cookie&#xff1a; 携带身份信息请求认证 之后的每次请求都携带cookie信息&#xff0c;cookie记录在请求头中 token&#xff1a; 携带身份信息请求认证 之后的每次请求都携带token认证信息 可能记录在请求头…

Java随记

Java java保留两位小数 1、使用String.format()方法&#xff1a; public static void stringFormatdecimalFormatKeepTwoDecimalPlaces(){double number 3.1415926;String result String.format("%.2f", number);System.out.println(result);}输出&#xff1a;3…

Large Language Models areVisual Reasoning Coordinators

目录 一、论文速读 1.1 摘要 1.2 论文概要总结 二、论文精度 2.1 论文试图解决什么问题&#xff1f; 2.2 论文中提到的解决方案之关键是什么&#xff1f; 2.3 用于定量评估的数据集是什么&#xff1f;代码有没有开源&#xff1f; 2.4 这篇论文到底有什么贡献&#xff1…

振弦采集仪助力岩土工程质量控制

振弦采集仪助力岩土工程质量控制 随着工程建设规模越来越大&#xff0c;建筑结构的安全性和稳定性越来越成为人们所关注的焦点。岩土工程在工程建设中占据着非常重要的地位&#xff0c;岩土工程质量控制更是至关重要。而振弦采集仪作为一种先进的检测设备&#xff0c;正得到越…

[PyTorch][chapter 5][李宏毅深度学习][Classification]

前言&#xff1a; 这章节主要讲解常用的分类器原理.分类主要是要找到一个映射函数 比如垃圾邮件分类 : c0, 垃圾邮件 c1 正常邮件 主要应用场景&#xff1a; 垃圾邮件分类,手写数字识别,金融信用评估. 这里面简单了解一下&#xff0c;很少用 目录&#xff1a; 1&#xff1a; …