位置: IT常识 - 正文

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

发布时间:2024-01-16

推荐整理分享[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锁定改不了)

  • 印花税纳税义务人有哪些
  • 现金存银行会计分录
  • 百旺购货方红字信息表怎么开具
  • 快递公司增值税怎么算
  • 公司对供应商罚款合法吗
  • 差额开票如何入账
  • 业务招待费税前扣除比例
  • 超标的职工教育经费为什么是可抵扣
  • 企业股权转让如何避税收
  • 行政单位发过节费违法吗
  • 转贴现视为贷款银行如何进行账务处理?
  • 票据占比不得超过各项贷款的
  • 房租费用在本年内可以不摊销吗?
  • 民事责任行政责任刑事责任的区别
  • 公司向员工个人借款
  • 代收水电费如何开票商品分类编码
  • 通讯费补贴如何领取
  • 为什么盈利的企业也有可能发生债务危机
  • 为什么要结转成本差异
  • 个人收回转让的股权个税应如何处理?
  • QuickBooks - QuickBooks是什么进程 有什么用
  • win10 microsoft store怎么改变下载途径
  • 跨境电商小规模与一般纳税人
  • 应交税费进项税额在借方说明什么
  • dotnetfx2.0
  • 如何做商品批发
  • Chateau de Castelnaud in Perigord, France (© Peter Adams/Offset by Shutterstock)
  • php image
  • 最贵的游戏宣传片
  • 赠送的商品怎么入库 企业会计准则
  • css盒子如何居中
  • php excel导入数据
  • 外贸企业进项发票能是外贸企业吗
  • 待抵扣进项税额和进项税额的区别
  • 3d representation
  • react 入门教程
  • vue3环境搭建
  • mksysb命令
  • 员工预支款计入什么科目
  • 冲减预提成本分录
  • 帝国cms app
  • 私募基金成立的规模条件
  • 技术咨询费属于
  • 报税营业成本包括什么
  • 设计模式代理模式
  • mongodb数据库操作遇到的问题和解决方案
  • 织梦怎么改网站主页
  • 税务登记是需要原件还是复印件
  • 欠款在公司注销怎么处理
  • 装修公司财务报表图片
  • 视同销售是怎么回事?
  • 发票收款人和复核人可以是一个人吗
  • 研发支出是什么性质的科目
  • 简易征收需要勾选认证吗
  • 月销售额不超过15万的免征增值税
  • 进口增值税已抵进项税额
  • 总公司发票可以在分公司使用吗
  • 费用分摊怎么开口说好
  • 电子记账凭证需要划线吗
  • 研发费用人工费用包括
  • mysql查询倒数第二个字母为a
  • 使用sql查询
  • sqlserver代理服务启动失败
  • sqlserver怎么使用索引
  • Mysql 1864 主从错误解决方法
  • 台式电脑NUM LOCK键还能亮,算不算死机了
  • 局域网 下载
  • win7系统鼠标右键无法弹出菜单
  • 苹果mac os x 怎么样使用光盘
  • 安卓接入点
  • js判断手机浏览器设置了电脑版浏览
  • node.js批量添加数据
  • unity mobile3d
  • 安卓开发代码大全
  • python爬虫代码怎么写
  • 红杏是什么意思什么样的
  • 安徽省国家税务局网
  • 自然人扣缴客户端重新安装后信息怎么同步
  • 下岗的党员需要交党费吗
  • 房地产对外投资契税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号