模态框点击确定开始播放音乐后,会自动再次弹出模态框的问题

来源:9-11 让每篇文章音乐独立显示状态

邢方阁

2020-10-16

我现在的逻辑是点击一个“播放”按钮的时候,会出现模态对话框,如果点击确定,才会播放歌曲。
现在的问题是 我点击 模态框 的确定“播放”按钮后,歌曲可以正常播放,但是会接着再次弹出是否播放的模态框。、
自己感觉好像是 onLoad里面的onPlay方法执行了两次。

// pages/posts/posts.js
import {userData} from "../../data/data.js";

Page({

  /**
   * 页面的初始数据
   */
  data: {
    isPlaying:false,
    _music:null
  },
  /**
   * 点击播放音乐
   */
  clkTap(event){
    let d = this;
    wx.showModal({
      title: '确定要播放歌曲吗?',
      success(res){
        if(res.confirm){
          let music = d.data._music;
          music.title = '音乐标题'
          music.src = 'http://m801.music.126.net/20201016142447/feea5f1252a6deea46e32c6d68ca7977/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/4143756822/39ad/2103/966a/29e5021350020f55de2768434859b7cf.mp3';
          d.setData({
            isPlaying:true
          })
        }
      }
    })
  },

  /**
   * 点击停止播放音乐
   */
  clkStop(event){
    let music = this.data._music;
    music.stop();
    this.setData({
      isPlaying:false
    })
  },
  tapList(event){
    console.log(event.currentTarget.dataset.id);
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    const music = wx.getBackgroundAudioManager();
    this.data._music = music;
    music.onPlay(this.clkTap);
    music.onPause(this.clkStop);
    this.setData({
      userData
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})
写回答

1回答

7七月

2020-10-16

如果怀疑是onload执行了两次 那么就onload里写一个console 看看是否输出两次。我觉得是不会的

0
2
7七月
回复
邢方阁
你可以换个其他的比如轻提示试试,看看是不是出现两次
2020-10-17
共2条回复

微信小程序入门与实战(全新版) 超20000人学习的好课

4年同步微信官方迭代,累计20000+人学习, 比微信官方更火爆!

23866 学习 · 6899 问题

查看课程