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

news/2024/7/20 1:39:39 标签: 微信小程序, 小程序
图形展示:

代码展示:

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>
    <text
        class="iconfont icon-shangyishou"
        id="pre"
        bindtap="switchMusic"  //绑定事件
    ></text>
    <text
        class="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.niftyadmin.cn/n/5246163.html

相关文章

dockerfile简单实践部署(jenkins,wordpress)

实现部署jenkins的流程 配置java环境&#xff0c;导入jenkins包&#xff0c;运行命令 java -jar jenkins包&#xff0c;这里为了减少进入jenkins的web端安装插件&#xff0c;将插件提前部署到容器内。 制作dockerfile 创建镜像所在的文件夹和Dockerfile文件 mkdir /test cd …

3.PyTorch——常用神经网络层

import numpy as np import pandas as pd import torch as t from PIL import Image from torchvision.transforms import ToTensor, ToPILImaget.__version__2.1.13.1 图像相关层 图像相关层主要包括卷积层&#xff08;Conv&#xff09;、池化层&#xff08;Pool&#xff09;…

springboot整合通用Mapper入门

springboot整合通用Mapper入门 概述 通用 Mapper 是一个用于简化 MyBatis 操作的开发框架。它通过提供通用的 CRUD&#xff08;创建、读取、更新、删除&#xff09;方法&#xff0c;减少了开发者需要编写的重复代码。通用 Mapper 的一个著名的实现是 MyBatis Generator&#…

python对py文件加密

参考文献&#xff1a; 【编程技巧】py文件批量编译&#xff0c;py批量转pyd&#xff0c;PyCharm设置py转pyd功能_py文件编译pyd-CSDN博客 【Python小技巧】加密又提速&#xff0c;把.py文件编译为.pyd文件&#xff08;类似dll函数库&#xff09;&#xff0c;你值得拥有&#x…

基于 Flink CDC 构建 MySQL 的 Streaming ETL to MySQL

简介 CDC 的全称是 Change Data Capture &#xff0c;在广义的概念上&#xff0c;只要是能捕获数据变更的技术&#xff0c;我们都可以称之为 CDC 。目前通常描述的 CDC 技术主要面向数据库的变更&#xff0c;是一种用于捕获数据库中数据变更的技术。CDC 技术的应用场景非常广泛…

ELK(三)—安装可视化工具

目录复制 目录 一、ElasticSearch-Head可视化工具介绍1.1特性&#xff1a;1.2用法&#xff1a; 二、安装2.1docker安装2.2Chrome插件安装 一、ElasticSearch-Head可视化工具介绍 ElasticSearch-Head 是一个基于浏览器的 Elasticsearch 可视化工具&#xff0c;它提供了一个直观…

「Java开发中文指南」IntelliJ IDEA插件安装(二)

IntelliJ IDEA是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的Java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能是非常强大的。 默认情况下&…

最新版本——Hadoop3.3.6单机版完全部署指南

大家好&#xff0c;我是独孤风&#xff0c;大数据流动的作者。 本文基于最新的 Hadoop 3.3.6 的版本编写&#xff0c;带大家通过单机版充分了解 Apache Hadoop 的使用。本文更强调实践&#xff0c;实践是大数据学习的重要环节&#xff0c;也能在实践中对该技术有更深的理解&…