vue跨页面调用函数快速实现(可避免this失效问题)

功能目的

在A页面@click="song(music)"被触发时调用B页面中的方法song(music),并将参数music传递给B页面中的song方法

调用函数页面(A页面)

使用函数:

music.id为传递的参数

window.parent.test(event,music.id)
具体实现:
song:function (music){
          // main.methods.song(music);
          // mixin.$emit('song',music)
          // this.$refs.minxins.song(music)
          window.parent.test(event,music.id)
        }

被调用函数页面(B页面)

挂载函数

B页面接收A页面的调用时,先在mounted函数中通过window['test'] = (event,name) =>{}进行引入

注意:window['test'] 的'test'应与调用页面A页面中 window.parent.test(event,music.id)的'test'一致

(event,name)中的neme为A页面传入的参数

mounted() {
    var that = this;
    window['test'] = (event,name) =>{
      //console.log(event)
      //console.log(name)
      //最终要调用的方法,调用并传入参数
      that.song(name)
    }
  }

注意:为避免this失效,需在mounted方法中将this赋给that,通过that再去调用song方法

被调用的方法:
 song:function(music1) {
      // console.log(music1)
      // alert(music1)
      // let that=this
      // alert(music1.id)
      axios.get('/lingmeng-song/song/findById/'+music1).then(res=>{
        // console.log(res.data.data)
        var music={title:"",author:"",url:"",pic:"",lrc:""};
        music.title=res.data.data.name;
        music.url=res.data.data.url;
        music.author=res.data.data.introduction;
        music.pic=res.data.data.pic;
        music.lrc=res.data.data.lyric;
        // console.log(music)

        for (let i =this.audio.length; i >= 0; i--) {
          if (i == 0) {
            this.audio[i]=music;
            break;
          }
          this.audio[i]=this.audio[i-1]
        }
        // this.audio[this.audio.length]=music
        var musics=this.audio;
        // alert("数量"+musics.length)
        // var musics={music}
        this.$set(this.audio,musics);

        // this.audio=musics;
        // alert(this.audio)
        // console.log(this.audio)
        // console.log(this.move)
        this.move=true
        // alert(1)
      })
      // that.find()

    },

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落影离殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值