首页 > 其他分享 >uniapp 页面跳转传值(eventChannel)

uniapp 页面跳转传值(eventChannel)

时间:2023-06-15 16:23:26浏览次数:41  
标签:uniapp orderInfo 数据 eventChannel itemData 跳转 data 页面

在A -> B页面时,如果想要将A页面中的数据传给B,可以使用eventChannel方法或者用url拼接,在这里先说明第一种eventChannel方法如何实现。

A页面:

首先定义了一个点击事件handleItemClick,触发点击事件后再传递数据

data() {
  return {
     itemData: '123' 
  }   
}

methods: {
  handleItemClick() {
      const _this = this
      uni.navigateTo({
        url: '/pages/productionSchedule/detail/index', //B页面的路由
        success(res) {
          res.eventChannel.emit('acceptDataFromDistributionGuidance', { data: _this.itemData})
        }
      })
    },
}

B页面:

  data() {
    return {
      orderInfo: {}
    }
  },

onLoad() {
    const eventChannel = this.getOpenerEventChannel()
    let orderInfo = {}
    // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
    eventChannel.on('acceptDataFromDistributionGuidance', function (data) {
      orderInfo = { ...data.data }  // data为接收到的数据
      console.log('$', data)
    })
    this.orderInfo = orderInfo
  },

注意:this指向

1.B页面中:

  如果是想要把接收到的数据存到B页面的data中,不能在on事件内部直接使用this,因为此时this指向并不是全局,而是函数内部,所以无法通过this.orderInfo = orderInfo语句赋值,在B页面中我通过在on外部重新定义了一个局部变量,先将传过来的数据赋值给局部变量,最后在on的外部通过局部变量赋值给data中的orderInfo

2.A页面中:

  在A页面中同样不能够通过this. itemData将data中的数据传给B,因为此时的this并没有指向全局,所以在外部重新定义了一个常量_this,它指向全局,在success回调函数中,用_this代替this实现将data中的数据传递给B页面

 

标签:uniapp,orderInfo,数据,eventChannel,itemData,跳转,data,页面
From: https://www.cnblogs.com/zengyu123/p/17483247.html

相关文章

  • Chrome 网页顶部底部跳转快捷方式
    跳到页面顶部:javascript:void((function(){document.body.scrollTop=0;(window.frames[0])&&(window.frames[0].document.body.scrollTop=0);})())跳到页面底部:javascript:void((function(){document.body.scrollTop=1000000;(window.frames[0])&&(window.f......
  • 浅析H5页面跳转小程序的3种实现方案
    经常会有这样的场景:用户在网页中一键唤起小程序,能够给用户提供更好的体验。实现H5跳转小程序的方案目前有多种,可以根据自己的实际场景选择。第一种:通过URLScheme适合在外部浏览器运行的H5页面,通过URLScheme的方式来拉起微信打开指定小程序。那如何获取小程序......
  • uniapp 打包发布小程序的流程指引
    用uniapp开发小程序其实和开发H5是一样的。就是在打包的时候会略有不同。uniapp在开发的时候需要在 manifest.json的源码视图配置nginx反向代理才能去请求后端`/代理名称${config.url}`一般情况下的请求都是代理+url去请求数据。但是,这个只是针对H5的请求方式......
  • uniapp上拉加载下拉刷新
    <template> <viewclass="content"> <scroll-viewscroll-with-animationrefresher-default-style="none":refresher-enabled="true" :refresher-triggered="triggered"refresher-background="#fff&quo......
  • uniapp-黑马优选学习02
    01.scroll-view配置高度或宽度时的屏幕铺满;使用 uni.getSystemInfoSync()获取设备相关信息02.取分类数据>API接口:/api/public/v1/categories>数据结构:{内容太多,请直接调用接口获取}>>为元素配置动态类信息(如果条件匹配则添加active类,否则不......
  • uniapp vue.config.js配置chunk-vendors.js文件拆分
    constpath=require('path')functionresolve(dir){returnpath.join(__dirname,dir);}constCompressionPlugin=require('compression-webpack-plugin')consthtmlWebpackPlugin=require('html-webpack-plugin')htmlWebpackPl......
  • Vue-router跳转和location.href有什么区别
    vue-router使用pushStat进行路由更新,不刷新页面,静态跳转;使用diff算法,按需加载,减少dom操作,同一个页面跳转或者路由跳转异步加载this.$nextTick(()=>{获取url})使用location.href来跳转,简单方便,但是刷新了页面;不同页面间跳转可以直接获取当前路径......
  • uniapp 更新依赖到指定版本解决uniAPI不可用问题
    我解决的问题:在项目中使用uni.startLocationUpdate(OBJECT)报错:uni.startLocationUpdateisnotafunction 怀疑是版本问题,当时的版本......
  • uniapp 不显示原生导航
    自定义导航栏使用注意当navigationStyle设为custom或titleNView设为false时,原生导航栏不显示//pages配置部分页面{"path":"pages/default/systemError","style":{"navigationBarTitleText":"系统异常","navigationS......
  • uniapp开发公众号H5时用户缓存无法清除问题
     业务场景:  此项目是一个vx公众号h5项目,每次更新版的时候用户端由于有缓存,每次都是使用滞后的版本解决方案:一、index.html文件如何保证不缓存,每次都使用服务器上最新的代码?此时需要一下标签:<metahttp-equiv="Cache-Control"content="no-cache,no-store,must-revali......