基于mpvue小程序和vue的H5的相互传参

7 篇文章 0 订阅
6 篇文章 0 订阅

1.小程序向H5传参数
当小程序跳转到H5页面的时候通过路径传参

<template>
  <div class="slyder-page">
    <web-view  :src="url"></web-view>
  </div>
</template>

定义的url后面直接拼接对应的参数?后面拼接对应的参数打开url

data () {
      return {
        url: ''
      }
    },
onLoad (options) {
this.url = h5页面的url?id=' + options.id + '&corpid=' + options.corpid
    }

2.基于vue脚手架H5页面向小程序传参数
在H5页面中
还需要在终端里面下载jweixin.js这个依赖,下载命令是
npm install weixin-js-sdk
首先在index.html里面引入

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>

然后在对应的H5页面components中写对应的操作,我这里是写的click时
H5页面的html

<template>
 <div>
    <button @click="clickMessage">参数</button>
   </div>
</template>
<script>
    export default {
      data () {
        return {  }
      },
      methods: {
        clickMessage () {
          let info = {
            wboid: 'data',//参数一
            wid: 'http://localhost:8088',//参数二
          };
          let json = JSON.stringify(info);
          wx.miniProgram.postMessage({ data: json });
        }
      }
    }
</script>

小程序的html部分(本人的小程序是基于mpvue框架,非微信原生的)

<template>
  <div class="slyder-page">
   <web-view  :src="url" @message="getMessage"></web-view>
  </div>
</template>

小程序页面js

data () {
      return {
        url: ' http://localhost:8088'
      }
    }
methods: {
      /**
       * H5页面参数接受函数
       * @author ChengMinJuan
       * @date 2018/12/4
       * @param options H5页面传来的参数对象
       */
      getMessage (options) {
        // 接受H5页面的参数
        let messageData = JSON.parse(options.mp.detail.data)
        console.log(messageData)
      }
    },

在你点击跳转到H5页面是拿不到参数,当你在H5页面里面进行了相应的操作,(比如我这里的click事件,当我点击了对应的按钮,当我点击返回的时候会将H5页面的参数传过来。)
也就是说接受H5页面的参数不在onLoad函数中,而是将接受的参数的函数写在method里面(比如我这里的getMessage ()函数)。
小程序后退、组件销毁、分享触发并收到消息,这是postMessage的特殊之处。
(其实这句话是官方文档的,当时我就没理解,我后退了但是没有收到参数,后来发现,是因为在对应的H5中对应的按钮,没有操作所以肯定接受不到参数)
3.H5的其他传参形式
需要说明的是,这几种接受参数的方式是跳转到那个页面,就在那个页面接受该参数,不是在小程序的web-view嵌套的页面里面接受参数
比如说,我需要跳转带/pages/active/active这个页面,那对应的参数就要到这个页面去接受参数,这个参数可以在该页面的onLoad函数里面接收。

clickMessage() {
          let info = {
            wboid: 'data',//参数一
            wid: 'http://localhost:8088',//参数二
          };
          let json = JSON.stringify(info);
          //这种跳转方式是跳转到小程序指定页面 并携带此参数
          // wx.miniProgram.navigateBack({url:'/pages/my/my?json=' + json})
          // wx.miniProgram.navigateTo({ url: '/pages/active/active?json=' + json });
          // wx.miniProgram.reLaunch({ url: '/pages/active/active?json=' + json  });
        }

emmmm,我可能有说的不对的地方,欢迎大佬补充哈!毕竟本人菜鸟一枚

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值