微信小程序、vueH5页面互相跳转并传递参数

微信小程序、vueH5页面互相跳转并传递参数

微信小程序是uni-app 运行到微信开发者工具里,vue 是 跑项目到本地的。

1.uni-app 里

<template>
  <web-view :src="url" @message="getMessage" @onPostMessage="getPostMessage"></web-view>
</template>

<script>
  export default {
    data() {
      return {
        url: ''
      }
    },
    onLoad(option) {
      let url = {
        phone: 127837238,
        name:'sunzhuang'
      }
      console.log(JSON.stringify(url))
      // http://192.168.3.69:8081/#/LoginIndex 这个地址就是你vue项目跑起来的地址
      this.url = 'http://192.168.3.69:8081/#/LoginIndex?url=' + JSON.stringify(url);
    },
    methods: {
      getMessage(e) {
        console.log("@message 接收成功")
        uni.showModal({
          content: JSON.stringify(e.detail),
          // content: 'haha',
          showCancel: false
        })
      },
      getPostMessage(e) {
        console.log("@onPostMessage 接收成功")
        uni.showModal({
          content: JSON.stringify(e.detail),
          // content: 'haha',
          showCancel: false
        })
      },
    },
  }
</script>

<style lang="scss">
</style>

2.vue页面
首先在vue index.html 引入 注意顺序 weixin.js 要在前

	<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
    <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.1.js"></script>

3.vue 页面代码

<template>
  <div class="container">
  		<!-- paramsData  是接受uni-app 小程序传递过来的值的  console.log 是不显示的 -->
      {{ paramsData }}
      <button @click="postMsg">向app发送消息</button>
  </div>
</template>
<script>
export default {
  name: '',
  props: [],
  data() {
    return {
      paramsData:'',
    }
  },
  mounted() {
 	// $route.query是拿不到的
 	// 获取浏览器地址,分割?后面的就是传过来的值了
    console.log(window.location.href);
    console.log(window.location.href.split('?'))
    this.paramsData = window.location.href.split('?')[1]
    this.$nextTick(() => {
    // 确保 index.html 页面引入的js加载完成后 在监听UniAppJSBridgeReady方法
      document.addEventListener('UniAppJSBridgeReady', function () {
        uni.getEnv(function (res) {
          console.log('当前环境:' + JSON.stringify(res));
        });
      });
    })
  },
  methods: {
    postMsg() {
      console.log("调用uni.postMessage,开始发送")
      // uni-app 里  web-view 的方法  就可以拿到 data: {action: 'postMessage hh'}
      uni.postMessage({
        data: {
          action: 'postMessage hh'
        }
      });
      // 返回上一级
      // uni.navigateBack()
      // wx.miniProgram.redirectTo({
      //   url: '/pages/cate/cate' // 小程序中页面的路径
      // })
      wx.miniProgram.switchTab({
        url: '/pages/cate/cate' // 小程序中页面的路径
      })
    },
  },
}
</script>

可以直接复制使用 !!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序,可以使用`wx.navigateTo`或`wx.redirectTo`方法跳转页面,并且可以通过传递参数的方式将数据传递到目标页面。具体实现方法如下: 1. 在源页面,使用`wx.navigateTo`或`wx.redirectTo`方法跳转到目标页面,并将数据以对象的形式传递给目标页面。例如: ```javascript wx.navigateTo({ url: '/pages/target/target?id=123&name=小明&age=18', }); ``` 在上述代码,我们将数据以查询字符串的形式传递给目标页面,查询字符串的键值对以`&`分隔,键和值之间以`=`连接。 2. 在目标页面的`onLoad`生命周期函数,获取传递过来的数据。例如: ```javascript onLoad: function (options) { console.log(options); // { id: '123', name: '小明', age: '18' } }, ``` 在上述代码,我们可以通过`options`参数获取传递过来的数据,`options`是一个对象,包含了所有传递过来的查询字符串的键值对。 需要注意的是,如果传递的数据是一个对象,可以使用`JSON.stringify`方法将其转换成字符串,然后在目标页面使用`JSON.parse`方法将其转换回对象。例如: ```javascript // 在源页面传递对象参数 const obj = { id: 123, name: '小明', age: 18 }; wx.navigateTo({ url: `/pages/target/target?data=${JSON.stringify(obj)}`, }); // 在目标页面获取对象参数 onLoad: function (options) { const data = JSON.parse(options.data); console.log(data); // { id: 123, name: '小明', age: 18 } }, ``` 在上述代码,我们将传递的对象参数使用`JSON.stringify`方法转换成字符串,然后将其以查询字符串的形式传递给目标页面。在目标页面,使用`JSON.parse`方法将其转换回对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值