位置: IT常识 - 正文

[uniapp] 跨页面传值 uni.$emit 和 uni.$on 的使用方法 以及遇到的坑(uniapp跨域解决方案)

编辑:rootadmin

推荐整理分享[uniapp] 跨页面传值 uni.$emit 和 uni.$on 的使用方法 以及遇到的坑(uniapp跨域解决方案),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:uniapp跨平台,uniapp 页面之间传递数据,uniapp跨端,uniapp跨端,uniapp页面间传值,uniapp跨端,uniapp页面间传值,uniapp 跨页面传值,内容如对您有帮助,希望把文章链接给更多的朋友!

uni.$emit 和 uni.$on 是uniapp自带的跨页面传值   

vue 父子通讯可以用 props  this.$emit   这种简单的父子通讯紧适用于 页面和组件 或者 组件之间的传值,他并不适用于页面和页面的互相传值

那要实现页面通讯呢,我们一起来看看uni.$emit 和 uni.$on的使用方法

示例:

        A页面在 onload 中使用   uni.$on('自定义名称',function(data){}   接收   data为接收到的值

        B页面在事件中  使用    uni.$emit('自定义名称',{属性名称 : 属性值}) 并搭配使用 uni.navigateBack 跳回A页面     A页面的自定义名称要和B页面的自定义名称相同

代码:

        A    页面

// A 页面export default { data(){ return{ }; }, onload(){ uni.$on('add',function(res){ console.log(res.listData) // 为 B 页面传过来的值 )} },}

        B   页面

// B 页面export default { data(){ return{ listData:[1,2,3,4,5] }; }, methods:{ jump(){ uni.$emit('add',{listData:this.listData}) uni.navigateBack({ delta: 1 }); }, },}

这样就实现的页面和页面之间的通讯    

[uniapp] 跨页面传值 uni.$emit 和 uni.$on 的使用方法 以及遇到的坑(uniapp跨域解决方案)

但是  但是  但是 (重点!!!敲黑板)

 uni.$emit 和 uni.$on 都属于全局跨页面传参

所以在A页面  在 onUnload 周期 添加移除监听事件

  uni.$off('自定义名称');

// A 页面export default { data(){ return{ }; }, onload(){ uni.$on('add',function(res){ console.log(res.listData) // 为 B 页面传过来的值 )} }, onUnload() { // 移除监听事件 uni.$off('add'); },}

以上就解决了uniapp 跨页面传参

下面和大家分享一下  博主在使用uni.$emit 和 uni.$on 遇到的大坑

A页面 和 B 页面同时都 调用了 C页面 并且使用了uni.$on 并且名字是一样的

C页面 返回是方法  使用了  uni.$on 同时也使用了 uni.navigateBack 

A页面代码   

// A 页面export default { data(){ return{ }; }, onload(){ uni.$on('add',function(res){ console.log(res.listData) // 为 C 页面传过来的值 )} }, onUnload() { // 移除监听事件 uni.$off('add'); }, methods:{ // A 页面 跳转B页面 jumpB(){ uni.navigateTo({ url:'B' }) }, // A 页面 跳转C页面 jumpC(){ uni.navigateTo({ url:'C' }) }, },}

B页面代码

// B 页面export default { data(){ return{ }; }, onload(){ uni.$on('add',function(res){ console.log(res.listData) // 为 C 页面传过来的值 )} }, onUnload() { // 移除监听事件 uni.$off('add'); }, methods:{ // B 页面 跳转C页面 jumpC(){ uni.navigateTo({ url:'C' }) }, },}

C 页面

// C 页面export default { data(){ return{ listData:[1,2,3,4,5] }; }, methods:{ jump(){ uni.$emit('add',{listData:this.listData}) uni.navigateBack({ delta: 1 }); }, },}

  当A页面跳B页面   B页面跳到C页面          在A页面跳转到B页面然后B页面跳转到C页面  C页面修改完数据之后 AB页面的值都发生了改变

解决方法:AB页面的名称都一样   所以数据渲染混乱   这个时候把名字改成对应的就好了,

创作不易   如果对您有帮助 请留下赞再走吧

本文链接地址:https://www.jiuchutong.com/zhishi/297282.html 转载请保留说明!

上一篇:Cursor!!!GPT-4帮我写代码

下一篇:谷歌浏览器被hao123网页(或其他网页)劫持了,怎么办?(已解决)(谷歌浏览器被hao123锁定改不了)

  • 小规模免收增值税 其他收益怎么算
  • 怎么找高新技术企业的数据
  • 研发费用可以列支成本吗
  • 金税盘纳税申报流程
  • 定额发票验旧后怎么报税
  • 累计所得税前净现金流量计算公式为
  • 没有土地使用证的房子拆迁怎么办
  • 劳务报酬所得如何计税
  • 收到三代手续费返还
  • 赠品折扣计算法
  • 随同产品销售单独计价的包装物计入
  • 企业增值税年底怎么结转
  • 发票限额是多少
  • 土地增值税清算规程实施细则
  • 事业单位退休人员独生子女费如何发放
  • 填开了红字信息表但未开红字发票
  • 小规模纳税人附表一怎么填
  • 建筑业企业包括哪些企业
  • 哪些进项税不能加计抵减
  • 序列号不可用怎么办
  • 开票含税和不含税怎么切换视频讲解
  • 支票进账对方没钱开户行会打电话叫他存钱吗?
  • 递延所得税年初数和期末数
  • 1697509110
  • 一次发放数月的高温津贴如何计算个税?
  • 1697509557
  • 小规模纳税人开专票不超过30万要交税吗
  • 企业转让销售配额怎么算
  • 第三方要求
  • win7系统中回收站的内容清空后还能恢复吗
  • win7怎么获取管理员
  • php的api调用方法
  • 飞机票增值税发票可以作为报销凭证吗
  • 事业单位工会会员费如何计算
  • PHP:session_encode()的用法_Session函数
  • 最小的3g无线路由器型号
  • 冈山平原
  • mxnet github
  • 自然保护什么意思
  • 营改增企业所得税税率
  • sysstat命令
  • php禁用system用什么绕过
  • 为什么没缴税
  • php如何判断用户是否在线
  • 商业承兑到期后有效期
  • 11月资产负债表
  • 帝国cms如何卸载应用
  • 哪些发票可以抵扣?
  • MySQL中distinct与group by语句的一些比较及用法讲解
  • mac下安装mysql
  • 车辆抵押贷款怎么办理
  • 分配现金股利如何做会计分录
  • 代收第三方补偿什么意思
  • 限定性和非限定性资产
  • 库存商品暂估入库是什么意思
  • 登记生产成本和制造费用的明细账
  • mysql中具体到删某一个数据
  • mac声音无法调节
  • linux系统百科
  • .msc是什么文件
  • linux操作系统内核
  • 修改etc profile
  • Nehe第六章纹理映射
  • nodejs调用go
  • 滤镜调试
  • android deam
  • awk命令使用什么变量存储行号
  • excel一行首尾互换
  • unity怎么学
  • js中排序的函数
  • 在xml文件里使用的命令
  • android基础入门教程
  • javascript面向
  • jquery实现搜索功能
  • 安卓怎么压缩
  • 纳税人不如实申报税收怎么办
  • 广州电子税务局官网登录入口网址
  • 停车票日期在哪里
  • 江苏地税局如何交社保
  • 贵阳市税务电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设